Как отследить приходят ли данные на сервер websocket Ratchet?

179
11 сентября 2018, 03:30

Сделал по данному примеру https://gostash.it/ru/stashes/1533-podklucenie-k-serveru-websocket-iz-web-prilozenia Сервер запускается,

public function get () {
$eventModel = [
    'subscribeKey' => 'eventMonitoring',
    'data'  => 'eventData' . rand(1,100)
];
Book::pushEventToSocket($eventModel);
var_dump($eventModel);
}

данные отправляю, в pushEventToSocket данные приходят, а вот как проверить что они до сервера дошли ?

static function pushEventToSocket(array $eventModel)
{
    $context = new \ZMQContext();
    $socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'desktop');
    if($socket instanceof \ZMQSocket)
    {
        // Здесь тоже передаём идентификатор, чтобы в push классе мы смогли получить объект topic
        $eventModel['subscribeKey'] = 'eventMonitoring';
        $eventData = json_encode($eventModel);
        $socket->connect("tcp://127.0.0.1:5555");
        $socket->send($eventData);
        file_put_contents('mekas1.txt', $eventData, FILE_APPEND);
    }
}

Сервер

public function actionPushServer($port=5555)
{
    $loop = Factory::create();
    // Класс, который реализуем ниже.
    $pusher = new EventPusher;
    // Listen for the web server to make a ZeroMQ push after an ajax request
    $context = new Context($loop);
    $pull = $context->getSocket(\ZMQ::SOCKET_PULL);
    // Binding to 127.0.0.1 means the only client that can connect is itself
    $pull->bind('tcp://127.0.0.1:'.$port);
    $pull->on('message', array($pusher, 'onPushEventData'));
    // Set up our WebSocket server for clients wanting real-time updates
    $webSock = new Server($loop);
    // Binding to 0.0.0.0 means remotes can connect
    $webSock->listen(8080, '0.0.0.0');
    $webServer = new IoServer(
        new HttpServer(
            new WsServer(
                new WampServer(
                    $pusher
                )
            )
        ),
        $webSock
    );
    $loop->run();
}

Подписка клиента в onSubscribe происходит. при создание события данные pushEventToSocket получает, а вот доходят они до сервера я не знаю как отследить. Так же не знаю обрабатывает ли сервер входящие данные и вызывает функцию $pull->on('message', array($pusher, 'onPushEventData')); которая возвращает данные подписанным клиентам.

Answer 1

Я нашел решение , просто никогда не разрабатывать на windows, поставил ubuntu 16.04 настроил и все работает просто превосходно . А так скорее всего или какой то софт блокировал отправку сообщений по tcp т.к функций find и connect работала ,проблема именно в том что сообщение не доходит, и соответственно сервер не может его принять.

READ ALSO
Повторы строк php

Повторы строк php

Есть код, который выводит цвета:

160
RedBeanPhp ошибка

RedBeanPhp ошибка

Выдает ошибку

179
Illegal string offset как исправить?

Illegal string offset как исправить?

Добрых времен суток и тд! Такая проблема: Я полнейший камень в PHP, просто дубИмеется следующая проблема - ОШИБКИ:

158