鉴于使用CometD的Java Web应用程序,如果每次Bayeux处理消息时如何向所有频道的订阅者发布消息?
为了进行测试,我使用了serverSession.deliver(serverSession, "/test-channel", map, null);
。
结果是我的Javascript客户端将成功订阅,但只接收10次尝试中的1次消息。因此,90%的情况下,浏览器没有收到任何消息,但Bayeux日志记录(级别3)显示每次都将它们发送到正确的频道。
我应该使用某种形式的客户端会话吗? CometD文档似乎有点不清楚。
答案 0 :(得分:2)
使用localSession
似乎就是答案。我实现了这个来修复:
ClientSessionChannel channel = localSession.getChannel(getClientChannel());
channel.publish(map);
客户端现在正在接收所有消息。