Add a client that uses the internal transport provider
public addInternalClient ( Thruway\Peer\ClientInterface $client ) | ||
$client | Thruway\Peer\ClientInterface |
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; }
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); }
<?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();
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();
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);