【发布时间】:2014-05-26 17:56:36
【问题描述】:
我目前正在运行并使用 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));
然后在我的网络服务器脚本中,我可以将它发送到一个方法 (onNewPush),以便在运行 push.php 文件时对其进行处理(运行?):
...
$push = $context->getSocket(ZMQ::SOCKET_PULL);
$push->bind('tcp://127.0.0.1:5555');
$push->on('Push Notification', array($pusher, 'onNewPush'));
...
所以这工作正常,但我在尝试收到回复时遇到了麻烦。我正在尝试类似:
pull.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 变量加载了我的文件,该文件实现了一些棘轮接口。但本质上我只是返回一个字符串:
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
有人知道为什么吗?
getSocket() 上的第二个参数还有什么重要性?就像一个永远不会再使用的字符串。
干杯
更新
【问题讨论】:
标签: php websocket zeromq ratchet