【问题标题】:How can I publish a message to all Javascript subscribers for a channel using CometD?如何使用 CometD 向频道的所有 Javascript 订阅者发布消息?
【发布时间】:2023-03-03 02:29:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java javascript cometd ajax-polling bayeux


    【解决方案1】:

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

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

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

    【讨论】:

    • 您是否尝试过例如从 java 客户端向频道发布消息,并且您曾期望该消息会到达所有订阅者(甚至是 javascript/dojo 的订阅者?)如果可以,请提供java发布客户端的完整代码?我有这个用例,我不知道出了什么问题,因为 javascript 客户端没有收到消息。谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多