Symfony2 WebSocketBundle - ZMQ Push not work
我正在使用Symfony2来构建一个简单的聊天应用程序。我决定使用GeniusEsOfSymfony/WebSocketBundle作为我的WebSocket,它由Ratchet提供支持:
https://github.com/GeniusesOfSymfony/WebSocketBundle
我设法使用PubSub让聊天工作,但我想使用推送集成:我希望客户端通过AJAX将消息发送到我的Symfony2控制器,这反过来又应该将消息推送到WebSocket的所有客户端。
我关注了此文档页面:
https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/Pusher.md
我尝试过同时使用ZMQ和Websocket Pusher。
使用ZMQ,当我运行websocket时,我收到cmd通知:
ZMQ 传输侦听 127.0.0.1:5555
但是,推送消息不起作用:
$pusher = $this->container->get("gos_web_socket.zmq.pusher");
//push(data, route_name, route_arguments)
$pusher->push(["type" => "newMessage", "text" => $request->request->get("msg")], "chat_topic");
这是我的ChatTopic类中的onPush方法:
class ChatTopic implements TopicInterface, PushableTopicInterface {
public function onPush(Topic $topic, WampRequest $request, $data, $provider) {
$topic->broadcast($data);
}
}
从不调用 onPush 方法。此外,推送器事件永远不会被触发。代码中似乎没有异常。
使用WebSocket Pusher,我甚至无法运行该服务。cmd中没有像ZMQ那样的通知,并且使用命令我无法检测到它正在侦听端口1337。当我尝试推送它时,我得到异常:netstat
无法打开套接字。原因:无法建立连接,因为目标计算机主动拒绝连接
可能是因为端口 1337 上没有服务侦听。
附言 - 我在Windows 10上使用WAMP服务器。我已成功在 WAMP 上安装了 ZMQ 扩展,如 .phpinfo()