コード例 #1
0
 /**
  * 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);
 }
コード例 #2
0
        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);