Интеграция WS client в существующий WS server

Имеется PHP веб-сервер на базе Windows Server. На нем запущен WebSocketServer (Ratchet\WebSocket).

Появилась необходимость при получении некоторых сообщений от клиентов в WebSocketServer отправлять некоторые данные на другой WebSocketServer. Другими словами, нужно:

  1. подключиться как клиент (WebSocketClient)
  2. отправить сообщение
  3. при получении ответа обработать ответ и уже обработанные данные разослать своим пользователям
<?php
class MyWebSocketServer implements \Ratchet\WebSocket\MessageComponentInterface {
    protected $clients;

    protected $socketClient;

    public function __construct()
    {
        $this->clients = new \SplObjectStorage();

        // создаем некий socket сlient
        $this->socketClient = new SomeSocketClient('ws://tc.ua:6001');
        // вешаем колбек на приход сообщения на для этого клиента
        $this->socketClient->on('message', function($data) {
            $this->doAction($data);
        });
    }

    function doAction($data) {
        // код обработки данных упущен!!!

        $client_id = $data->client_id;
        // обработанные данные отправляем уже клиенту этого сервера
        $this->clients[$client_id]->send($data);
    }


    function __destruct() {
        if ($this->socketClient) { $this->socketClient->close(); }
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        // код обработки сообщения упущен!!!
        // отправляем данные на другой WebSocketServer
        $this->socketClient->send($msg);

        $from->send('Ваши данные получены, ожидайте ответа');
    }
}

Собственно какие есть клиенты, которые не блокируют?


Ответы (0 шт):