Websocket を介してサーバーへのリクエストを取得し、サーバーから応答を返そうとしています。これは「一種の」動作ですが、これを実行できるのは一度だけです。余分なリクエストはどこかにハングアップします。
サーバーバインド:
$pull = $context->getSocket(ZMQ::SOCKET_REP);
$pull->bind('tcp://127.0.0.1:5552');
$pull->on('message', array($pusher, 'onPull'));
$pull->recv();
$pull->send('back');
サーバーに静的な PHP ファイルがあり、実行時にサーバーからの応答を返す必要があります。
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_REQ, 'Sock');
$socket->connect("tcp://localhost:5552");
$socket->send('sending');
$message = $socket->recv();
echo "$message";
サーバーを起動してphpファイルを実行すると、「戻る」応答が返されます。ただし、もう一度実行しようとすると、ハングします。リクエストは毎回受けているのですか?
また、誰か$pull->onが私にビットを説明できますか?それが何をするのかどこにも見つかりません。
完全なサーバー コード:
<?php
require './vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$pusher = new MyApp\Pusher;
$context = new React\ZMQ\Context($loop);
$push = $context->getSocket(ZMQ::SOCKET_PULL);
$push->bind('tcp://127.0.0.1:5555');
$push->on('message', array($pusher, 'onNewPush'));
$pull = $context->getSocket(ZMQ::SOCKET_REP);
$pull->bind('tcp://127.0.0.1:5552');
$pull->on('message', array($pusher, 'onPull'));
$pull->recv();
$pull->send('back');
$webSock = new React\Socket\Server($loop);
$webSock->listen(8080, '0.0.0.0');
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
$pusher
)
),
$webSock
);
$loop->run();