44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.3 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\EventLoop\Loop;
							 | 
						||
| 
								 | 
							
								use React\Promise\Promise;
							 | 
						||
| 
								 | 
							
								use React\Socket\SocketServer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// This example demonstrates notifications, so there are no commands here.
							 | 
						||
| 
								 | 
							
								// You can add whatever commands you like.
							 | 
						||
| 
								 | 
							
								$commands = new CommandRegistry();
							 | 
						||
| 
								 | 
							
								$bus = new CommandBus($commands);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$server = new SocketServer("tcp://127.0.0.1:9999");
							 | 
						||
| 
								 | 
							
								$bus->addServer($server);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$bus->on(CommandBus::EVENT_NOTIFY,
							 | 
						||
| 
								 | 
							
								    function (string $event, array $data) {
							 | 
						||
| 
								 | 
							
								        printf("notify event: %s %s\n", $event, json_encode($data, JSON_UNESCAPED_SLASHES));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$client = new CommandBusClient();
							 | 
						||
| 
								 | 
							
								$client->connect("tcp://127.0.0.1:9999");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$client->on(CommandBusClient::EVENT_NOTIFY,
							 | 
						||
| 
								 | 
							
								    function (string $event, array $data) {
							 | 
						||
| 
								 | 
							
								        printf("notify client: %s %s\n", $event, json_encode($data, JSON_UNESCAPED_SLASHES));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Wait for connections etc, before sending a notification.
							 | 
						||
| 
								 | 
							
								Loop::addTimer(1, function () use ($bus) {
							 | 
						||
| 
								 | 
							
								    $bus->notify("hello", [ 'greet'=>"World" ]);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								// Shutdown in 2 secs
							 | 
						||
| 
								 | 
							
								Loop::addTimer(2, function () use ($bus, $client) {
							 | 
						||
| 
								 | 
							
								    $bus->close();
							 | 
						||
| 
								 | 
							
								    $client->close();
							 | 
						||
| 
								 | 
							
								});
							 |