gpt4 book ai didi

php - Symfony2 WebSocketBundle - ZMQ 推送不起作用

转载 作者:行者123 更新时间:2023-12-03 01:52:45 25 4
gpt4 key购买 nike

我正在使用 Symfony2 构建一个简单的聊天应用程序。我决定使用GeniusesOfSymfony/WebSocketBundle对于我的 WebSocket,它由 Ratchet 提供支持:

https://github.com/GeniusesOfSymfony/WebSocketBundle

我设法使用 PubSub 进行聊天,但我想改用推送集成:我希望客户端通过 AJAX 将消息发送到我的 Symfony2 Controller ,而该 Controller 又应将消息推送到该客户端的所有客户端。 WebSocket。

我关注了此文档页面:

https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/Pusher.md

我尝试过使用 ZMQ 和 Websocket Pusher。

使用 ZMQ,当我运行 websocket 时,我收到 cmd 通知:

ZMQ transport listening on 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 那样的通知,并且使用 netstat 命令我无法检测到它正在监听端口 1337。当我尝试推送到它时,出现异常:

Could not open socket. Reason: No connection could be made because the target machine actively refused it

可能是因为没有服务监听端口 1337。

附注- 我使用的是 Windows 10 并使用 WAMP 服务器。我已在 WAMP 上成功安装了 ZMQ 扩展,如 phpinfo() 中所示。

最佳答案

您引用的文档,pusher.md ,不完整。您还必须将主题注册为服务并将其标记为配置的可用主题。

最好遵循 TopicSetup.md 。然而,这是缺少的亮点。

新的 ChatTopic 类可以在 Symfony 服务 AppBundle/Resources/config/services.yml 中注册,并像这样标记:

services:
app.chat_topic_service:
class: App\AppBundle\Topic\ChatTopic
tags:
- { name: gos_web_socket.topic }

关于php - Symfony2 WebSocketBundle - ZMQ 推送不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com