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"); |