/** * Start the application * * @param string $address The listen socket address */ public function start($address, $localCert = null) { if (isset($localCert)) { $this->server->setSocketContextOption('ssl', 'local_cert', $localCert); } // $client->on('listening', ...); $this->server->on('clientconnect', [$this, 'onClientConnect']); // $client->on('clientremove', ...); // $client->on('close', ...); $this->server->start($address); }
return 'success'; } private function getUsersOfRoom($roomId) { $room = $this->roomCollection->getById($roomId); $users = []; foreach ($room->getUsers() as $userId => $user) { $users[] = ['id' => $userId, 'username' => $user->getUsername(), 'avatarHash' => md5($user->getUsername()), 'status' => 'idle']; } return $users; } } /** * Setup the chat */ $roomCollection = new RoomCollection(); $room = new Room(1, 'Sandbox'); $userFactory = new UserFactory(); $roomCollection->add($room); /** * Start the server */ $eventHandler = new EventHandler($roomCollection, $userFactory); $logger = new EchoOutput(); $requestFactory = new RequestFactory(); $responseFactory = new ResponseFactory(); $frameFactory = new FrameFactory(); $clientFactory = new ClientFactory($eventHandler, $logger, $requestFactory, $responseFactory, $frameFactory); $socketServer = new Server($eventHandler, $logger, $clientFactory); $socketServer->start('127.0.0.1', 1337);