如何使用 CometD 向频道的所有 Javascript 订阅者发布消息?

发布于 2024-11-19 01:44:11 字数 327 浏览 9 评论 0原文

给定一个使用 CometD 的 Java Web 应用程序,每次 bayeux 处理消息时,如何向所有频道的订阅者发布消息?

为了进行测试,我使用了 serverSession.deliver(serverSession, "/test-channel", map, null);

结果是我的 Javascript 客户端将成功订阅,但 10 次尝试中仅收到 1 次消息。因此,90% 的情况下,浏览器不会收到任何消息,但 Bayeux 日志记录(级别 3)显示它们每次都被发送到正确的通道。

我应该使用某种形式的客户端会话吗? CometD 文档似乎有点不清楚。

Given a Java web application using CometD, how can I publish a message to all of a channel's subscribers each time a message is processed by bayeux?

For testing, I used serverSession.deliver(serverSession, "/test-channel", map, null);.

The result is that my Javascript client will subscribe successfully, but only receive messages 1 out of 10 tries. So, 90% of the time, no messages are ever received by the browser, yet the Bayeux logging (level 3) shows that they are being sent to the correct channel every time.

Should I be using some form of a client session? The CometD documentation appears to be a bit unclear.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海少女心 2024-11-26 01:44:12

使用 localSession 似乎是答案。我实现这个是为了修复:

ClientSessionChannel channel = localSession.getChannel(getClientChannel());
channel.publish(map);

客户端现在正在接收所有消息。

Using the localSession seems to be the answer. I implemented this to fix:

ClientSessionChannel channel = localSession.getChannel(getClientChannel());
channel.publish(map);

The clients are now receiving all messages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文