Интеграция WS client в существующий WS server
Имеется PHP веб-сервер на базе Windows Server. На нем запущен WebSocketServer (Ratchet\WebSocket).
Появилась необходимость при получении некоторых сообщений от клиентов в WebSocketServer отправлять некоторые данные на другой WebSocketServer. Другими словами, нужно:
- подключиться как клиент (WebSocketClient)
- отправить сообщение
- при получении ответа обработать ответ и уже обработанные данные разослать своим пользователям
<?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('Ваши данные получены, ожидайте ответа');
}
}
Собственно какие есть клиенты, которые не блокируют?