2

我面临着一个相当大的问题,我真的不知道它是由什么引起的。我网站上的很多东西都是通过 websockets 完成的,例如向客户端推送消息。

为了推动,我正在使用 ZMQ 和 Ratchet。

这是php代码:

                $UserMessage = array(
                    'user' => $userid,
                    'message' => 'Search started',
                );

                $context = new \ZMQContext();
                $socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'my pusher');
                $socket->connect("tcp://localhost:5555");

                $socket->send(json_encode($UserMessage));

这是推送服务器:

            <?php
            require dirname(__DIR__) . '/vendor/autoload.php';

$loop   = React\EventLoop\Factory::create();
$pusher = new Some\Bundle\Topic\Pusher();

// Listen for the web server to make a ZeroMQ push after an ajax request
$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555'); // Binding to 127.0.0.1 means the only client that can connect is itself
$pull->on('message', array($pusher, 'onMessage'));

// Set up our WebSocket server for clients wanting real-time updates
$webSock = new React\Socket\Server($loop);
$webSock->listen(8181, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect
$webServer = new Ratchet\Server\IoServer(
    new Ratchet\Http\HttpServer(
        new Ratchet\WebSocket\WsServer(
            new Ratchet\Wamp\WampServer(
                $pusher
            )
        )
    ),
    $webSock
);

$loop->run();

问题是:有时消息根本不会被推送。这是非常随机地发生的。有时它就像连续 20 条消息的魅力,有时则不然。

有谁知道这可能是由什么引起的?顺便说一句,我正在使用 nginx 作为网络服务器。是否有任何类型的日志可能会有所帮助?

问候

4

0 回答 0