0

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

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

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

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

4

1 回答 1

2

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

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

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

于 2011-07-08T19:37:58.003 回答