addInternalClient() public method

Add a client that uses the internal transport provider
public addInternalClient ( Thruway\Peer\ClientInterface $client )
$client Thruway\Peer\ClientInterface
Example #1
0
 protected function createTestRouter()
 {
     $this->assertNull($this->router);
     $this->router = new Router(\EventLoop\getLoop());
     // create a client that records all publish events
     $this->recordedEvents = [];
     $this->eventClient = new Client("test_realm", \EventLoop\getLoop());
     $this->eventClient->on('open', function (ClientSession $session) {
         $session->subscribe("wamppost.tests.", function ($args, $argsKw, $details, $pubId) {
             $eventMessage = new EventMessage(0, $pubId, $details, $args, $argsKw, $details->topic);
             array_push($this->recordedEvents, $eventMessage);
         }, (object) ["match" => "prefix"]);
     });
     $this->router->addInternalClient($this->eventClient);
     return $this->router;
 }
Example #2
0
 public function start()
 {
     $this->loop = \WyriHaximus\Ratchet\loopResolver();
     $router = new Router($this->loop);
     $router->addInternalClient(new InternalClient('first', $this->loop));
     $router->addTransportProvider(new RatchetTransportProvider(Configure::read('WyriHaximus.Ratchet.Connection.Websocket.address'), Configure::read('WyriHaximus.Ratchet.Connection.Websocket.port')));
     //$router->getRealmManager()->setDefaultAuthorizationManager(new AllPermissiveAuthorizationManager());
     EventManager::instance()->dispatch(WebsocketStartEvent::create($this->loop));
     $router->start(false);
     $this->loop->run();
 }
 /**
  * @param ConstructEvent $event
  */
 public function construct(ConstructEvent $event)
 {
     $router = new Router($event->getLoop());
     foreach (Configure::read('WyriHaximus.Ratchet.realms') as $realm => $config) {
         $router->addInternalClient(new InternalClient($realm, $event->getLoop()));
     }
     $router->addTransportProvider(new RatchetTransportProvider(Configure::read('WyriHaximus.Ratchet.internal.address'), Configure::read('WyriHaximus.Ratchet.internal.port')));
     //$router->getRealmManager()->setDefaultAuthorizationManager(new AllPermissiveAuthorizationManager());
     EventManager::instance()->dispatch(WebsocketStartEvent::create($event->getLoop()));
     $router->start(false);
 }
Example #4
0
<?php

require "../bootstrap.php";
require 'SimpleAuthProviderClient.php';
use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;
$router = new Router();
$router->registerModule(new \Thruway\Authentication\AuthenticationManager());
//Provide authentication for the realm: 'somerealm'
$authProvClient = new SimpleAuthProviderClient(["somerealm"]);
$router->addInternalClient($authProvClient);
$router->registerModule(new RatchetTransportProvider("127.0.0.1", 9090));
$router->start();
Example #5
0
 public function setInternalClient(ThruwayClientInterface $client)
 {
     $this->router->addInternalClient($client);
     $this->client = $client;
 }
<?php

/**
 * This is an example of how to use the InternalClientTransportProvider
 *
 * For more information go to:
 * http://voryx.net/creating-internal-client-thruway/
 */
require "../bootstrap.php";
require 'InternalClient.php';
use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;
$router = new Router();
$router->registerModule(new RatchetTransportProvider("127.0.0.1", 9090));
$router->addInternalClient(new \InternalClient());
$router->start();
<?php

require __DIR__ . "/../bootstrap.php";
use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;
$manager = new \Thruway\Manager\ManagerClient();
$loop = \React\EventLoop\Factory::create();
//$loop->addTimer(2, array($manager, "testSubscribe"));
$router = new Router($loop, $manager);
$router->registerModule(new RatchetTransportProvider("127.0.0.1", 9090));
$router->addInternalClient($manager);
$router->start();
Example #8
0
require_once __DIR__ . '/Clients/AbortAfterHelloWithDetailsAuthProviderClient.php';
require_once __DIR__ . '/Clients/DisclosePublisherClient.php';
require_once __DIR__ . '/Clients/QueryParamAuthProviderClient.php';
require_once __DIR__ . '/UserDb.php';
use Thruway\Logging\Logger;
use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;
//Logger::set(new \Psr\Log\NullLogger());
$timeout = isset($argv[1]) ? $argv[1] : 0;
$router = new Router();
$loop = $router->getLoop();
//Create a WebSocket connection that listens on localhost port 8090
//$router->addTransportProvider(new RatchetTransportProvider("127.0.0.1", 8090));
$router->registerModules([new \Thruway\Authentication\AuthenticationManager(), new \Thruway\Authentication\AuthorizationManager('authorizing_realm'), new \Thruway\Authentication\AuthorizationManager("authful_realm"), new InternalClient('testRealm'), new DisclosePublisherClient('testSimpleAuthRealm'), new \Thruway\Subscription\StateHandlerRegistry('state.test.realm'), new RatchetTransportProvider("127.0.0.1", 8090), new \Thruway\Transport\RawSocketTransportProvider()]);
//Provide authentication for the realm: 'testSimpleAuthRealm'
$router->addInternalClient(new SimpleAuthProviderClient(["testSimpleAuthRealm", "authful_realm"]));
// provide aborting auth provider
$router->addInternalClient(new AbortAfterHelloAuthProviderClient(["abortafterhello"]));
$router->addInternalClient(new AbortAfterHelloWithDetailsAuthProviderClient(["abortafterhellowithdetails"]));
$router->addInternalClient(new AbortAfterAuthenticateWithDetailsAuthProviderClient(["aaawd"]));
$router->addInternalClient(new QueryParamAuthProviderClient(["query_param_auth_realm"]));
////////////////////////
//WAMP-CRA Authentication
// setup some users to auth against
$userDb = new UserDb();
$userDb->add('peter', 'secret1', 'salt123');
$userDb->add('joe', 'secret2', "mmm...salt");
//Add the WAMP-CRA Auth Provider
$authProvClient = new \Thruway\Authentication\WampCraAuthProvider(["test.wampcra.auth"], $loop);
$authProvClient->setUserDb($userDb);
$router->addInternalClient($authProvClient);