Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Minimalistic dnode client for PHP

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 _test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 DnodeSyncClient.php
Octocat-spinner-32 LICENSE.txt
Octocat-spinner-32 README.md
README.md

dnode-php-sync-client

Minimalistic dnode client for PHP, supports only synchronous calling of methods on remote server.

  • It can call method on remote dnode server and it can receive response.
  • It does not support any other callbacks.
  • It does not support full dnode-protocol - response from remote server must not contain any callbacks or links section.

Look at dnode-php if you are looking for more complex support of dnode protocol.

Usage

Lets first start simple node.js server exposing echo method over dnode:

var dnode = require('dnode');
var port = process.argv[2] || 8080;
dnode({
  echo: function (data, callback) {
    callback(null, data);
  }
}).listen(port);

Now, we can call this echo method from PHP like this:

<?php
require_once "dnode-php-sync-client/DnodeSyncClient.php";
$dnode = new \DnodeSyncClient\Dnode();
$connection = $dnode->connect('localhost', 8080);
$response = $connection->call('echo', array('Hello, world!'));
var_dump($response);

Result:

array(2) {
  [0] =>
  NULL
  [1] =>
  string(13) "Hello, world!"
}

Requirements

  • php 5.3 - namespaces are used
  • phpunit - tests were written with phpunit 3.6

Run tests

To run all tests, just run phpunit . from the main directory.

_test/DnodeTest.php is integration test which needs dnode echo server running. Sources for this test server are in _test/node directory. You need to first install dnode dependency by running npm install . from directory _test/dnode. Once dnode is installed, DnodeTest.php will start the echo service on port 8080 when necessary.

The usual

We are hiring!

Something went wrong with that request. Please try again.