Websocket Ratchet - PullRequest
       6

Websocket Ratchet

0 голосов
/ 29 апреля 2018
class SocketServer implements MessageComponentInterface
{

    protected $clients;
    public function __construct()
    {
        $this->clients = new \SplObjectStorage; // Для хранения технической информации об присоединившихся клиентах используется технология SplObjectStorage, встроенная в PHP
    }

    public function onOpen(ConnectionInterface $conn)
    {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})\n";
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {

        //$data = json_decode($msg, true); //для приема сообщений в формате json
        if (is_null($msg))
        {
            echo "invalid data\n";
            return $from->close();
        }
        foreach ($this->clients as $client) {
            if ($from != $client) {
                $client->send($msg);
            }
        }
        echo $from->resourceId.' msg: '.$msg."\n";//id, присвоенное подключившемуся клиенту
    }

    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
        echo "Connection {$conn->resourceId} has disconnected\n";
    }

    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        echo "An error has occurred: {$e->getMessage()}\n";
        $conn->close();
    }

Откуда берется resourceId, как он генерируется? Можно ли добавить собственное значение и как я могу посмотреть на все данные в $ conn, какой класс реализует Интерпретацию ConnectionInterface? Могу ли я создать свой собственный класс соединения?

...