小编Roy*_*yar的帖子

Symfony2 WebSocketBundle - ZMQ Push无法正常工作

我正在使用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");
Run Code Online (Sandbox Code Playgroud)

这是我的ChatTopic类中的onPush方法:

class ChatTopic implements TopicInterface, PushableTopicInterface {

    public function onPush(Topic $topic, WampRequest $request, $data, $provider) {
        $topic->broadcast($data);
    }
}
Run Code Online (Sandbox Code Playgroud)

永远不会调用onPush方法.此外,推动事件永远不会被解雇.代码中似乎没有例外.

使用WebSocket Pusher,我甚至无法使服务运行.在cmd中没有像ZMQ那样的通知,并且使用netstat命令我无法检测到它正在侦听端口1337.当我尝试推送它时,我得到异常:

无法打开插座.原因:无法建立连接,因为目标计算机主动拒绝它

可能是因为没有服务侦听端口1337.

PS - 我在Windows 10上并使用WAMP服务器.我已成功在WAMP上安装了ZMQ扩展,如下所示phpinfo().

php zeromq websocket symfony ratchet

12
推荐指数
1
解决办法
674
查看次数

PHP ZMQ扩展:无法加载动态库

我正在使用Windows 10上的Wampserver。我使用的扩展名为ZMQ。我从以下网址下载了DLLS:https://pecl.php.net/package/zmq/1.1.3/windows

我以前使用的是PHP 5.6扩展版本,并且可以正常工作。但是该扩展程序有一个错误,因此我决定将我的php版本升级到7.0.4并尝试新版本的扩展程序。该扩展程序已成功安装,并显示在phpinfo()中,但是当我尝试从命令行(或使用该扩展程序的CLI服务)运行“ php -v”时,出现以下错误:“警告:PHP启动:无法加载动态库'D:/wamp64/bin/php/php7.0.4/ext/php_zmq.dll'-找不到指定的模块。在第0行的Unknown中”

奇怪的是文件“ php_zmq.dll”实际上存在于指定路径中。

重要说明:我的“ D:\ wamp64 \ bin \ apache \ apache2.4.18 \ bin \ php.ini”和我的“ D:\ wamp64 \ bin \ php \ php7”中都有“ extension = php_zmq.dll”行.0.4 \ php.ini”(据我所知,CLI使用该文件)。我无法删除这些行中的任何一行,因为此扩展名已删除,或者在CLI中不起作用。

php wamp wampserver zeromq

3
推荐指数
1
解决办法
1203
查看次数

标签 统计

php ×2

zeromq ×2

ratchet ×1

symfony ×1

wamp ×1

wampserver ×1

websocket ×1