45 lines
1.4 KiB
PHP
45 lines
1.4 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once __DIR__."/../vendor/autoload.php";
|
||
|
|
||
|
use NoccyLabs\React\CommandBus\CommandBus;
|
||
|
use NoccyLabs\React\CommandBus\CommandBusClient;
|
||
|
use NoccyLabs\React\CommandBus\CommandRegistry;
|
||
|
use NoccyLabs\React\CommandBus\Context;
|
||
|
use React\Promise\Promise;
|
||
|
use React\Socket\SocketServer;
|
||
|
|
||
|
$commands = new CommandRegistry();
|
||
|
// Register some function to call. The name here is "hello", and it will
|
||
|
// receive a Context holding the call context. Any passed data will be
|
||
|
// available as properties on the Context object.
|
||
|
$commands->register("hello", function (Context $context) {
|
||
|
// You don't have to, but you should return a promise from your
|
||
|
// commands.
|
||
|
return new Promise(function (callable $resolve) use ($context) {
|
||
|
$resolve("Hello, {$context->name}");
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Create the CommandBus and pass the CommandRegistry
|
||
|
$bus = new CommandBus($commands);
|
||
|
|
||
|
$server = new SocketServer("tcp://127.0.0.1:9999");
|
||
|
$bus->addServer($server);
|
||
|
|
||
|
// The server is sorted, now for the client!
|
||
|
|
||
|
$client = new CommandBusClient();
|
||
|
$client->on(CommandBusClient::EVENT_CONNECTED,
|
||
|
function () use ($client, $bus) {
|
||
|
$client->execute('hello', ['name'=>'Bob'])
|
||
|
->then(function ($result) use ($client,$bus) {
|
||
|
// Result from the call
|
||
|
var_dump($result);
|
||
|
// Shut down after receiving the response
|
||
|
$bus->close();
|
||
|
$client->close();
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
$client->connect("tcp://127.0.0.1:9999");
|