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

时间:2011-07-08 19:01:51

标签: java javascript cometd ajax-polling bayeux

鉴于使用CometD的Java Web应用程序,如果每次Bayeux处理消息时如何向所有频道的订阅者发布消息?

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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