3

我创建了一个有效的 Google Channel AP,现在我想向所有客户发送一条消息。

我有两个 servlet。第一个创建通道并告诉客户端useridand token。第二个由 an 调用http post并且应该发送消息。

要向客户端发送消息,我使用:

channelService.sendMessage(new ChannelMessage(channelUserId, "This is a server message!"));

这只会将消息发送给一个客户端。我怎么能把这个发给所有人?

我是否必须存储用于创建频道并为每个 ID 发送消息的每个 ID?如何将 ID 传递给第二个 servlet?

4

2 回答 2

3

使用 Channel API 是不可能创建一个频道然后有很多订阅者的。服务器为各个 JavaScript 客户端创建一个唯一通道,因此如果您具有相同的客户端 ID,则消息将仅由一个接收。

如果您想向多个客户端发送相同的消息,简而言之,您必须跟踪活动客户端并向所有客户端发送相同的消息。

如果这种方法听起来既可怕又混乱,请考虑将 PubNub 用于您的推送通知消息,您可以在其中轻松创建一个频道并拥有许多订阅者。让它在 Google App Engine 上运行并不难,因为它们几乎支持任何平台或设备

于 2012-09-29T11:27:38.473 回答
3

我知道这是一个老问题,但我刚刚完成了一个使用 Channel API 实现发布/订阅模型的开源项目,即您可以让多个用户订阅一个主题,然后所有这些订阅者都会收到通知任何人都会向该主题发布消息。它还具有一些不错的功能,如需要时自动消息持久性和“回执”,只要其他订阅者收到该消息,就可以通知订阅者。请参阅https://github.com/adevine/gaewebpubsub#gae-web-pubsub。在 Apache 2.0 许可下获得许可。

于 2012-12-06T04:09:12.203 回答