首页 文章

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

提问于
浏览
0

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

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

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

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

1 回答

  • 2

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

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

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

相关问题