現在、Ratchet PHP で動作する Web ソケット サーバーを使用しています。外部スクリプトがサーバーと通信する段階にはありません。ZMQ を使用してデータを正常にプッシュできます。
push.php
$json = ['name' => 'Joe Bloggs'];
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'Push Notification');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($json));
次に、Web サーバー スクリプトで、これをメソッド ( onNewPush
) に送信して、push.php ファイルが実行された (実行された?) ときに何かを実行できます。
...
$push = $context->getSocket(ZMQ::SOCKET_PULL);
$push->bind('tcp://127.0.0.1:5555');
$push->on('Push Notification', array($pusher, 'onNewPush'));
...
これは問題なく機能しますが、応答を返そうとすると問題が発生します。私は次のようなことを試みています:
プル.php
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_REQ, 'Pull Notification');
$socket->connect("tcp://localhost:5554");
$socket->send('data');
echo $socket->recv();
次に、サーバースクリプトで:
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5554');
$pull->on('message', array($pusher, 'onPull'));
私の$pusher
変数は、いくつかの Ratchet インターフェイスを実装するファイルをロードします。しかし、基本的には文字列を返すだけです:
public function onPull()
{
return "some data";
}
実行pull.php
するとエラーが発生します:
Fatal error: Uncaught exception 'ZMQSocketException' with message 'Failed to receive message: Not supported' in websockets\pull.php:9 Stack trace: #0 websockets\pull.php(9): ZMQSocket->recv() #1 {main} thrown in websockets\pull.php on line 9
誰かが理由を知っていますか?
また、2 番目のパラメーターにはどのような重要性がありgetSocket()
ますか? 二度と使われない紐のようです。
乾杯
更新しました