GAE Channel API 消息仅广播给一个客户端?

Posted

技术标签:

【中文标题】GAE Channel API 消息仅广播给一个客户端?【英文标题】:GAE Channel API message broadcast to only one client? 【发布时间】:2012-04-13 17:39:54 【问题描述】:

我最近一直在尝试学习 Google App Engine 的 Channel API。

我尝试制作一个简单的聊天应用程序,但遇到了问题。

这通常是我所做的。

服务器打开一个静态通道:

token = channel.create_channel('bigboys')

客户端 js 连接到通道:

var channel = new goog.appengine.Channel(token)

我没有使用 Google App Engines 用户。我不希望客户必须登录。

所以我的问题是,聊天应用程序并不能真正工作,只有一个客户可以加入频道。我知道每个频道规则有一个客户端 ID。那么如何在一个“聊天室”中支持多个客户端呢?

【问题讨论】:

【参考方案1】:

将通道视为一个客户端(浏览器)和您的服务器之间的连接。

如果您有聊天室,则需要为每个客户提供一个频道。您需要在服务器端跟踪聊天室中的所有客户端以及每个客户端的频道。当您发送消息时,您需要在聊天室的每个客户频道上发送消息。

【讨论】:

好的。这比我解释的更有意义 那么跟踪所有收听“广播”的客户的最佳方法是什么?你会把它们保存在 Memcache 中吗?数据存储? 我会在“广播”的数据存储区中有一个实体,它存储所有客户端的列表。将使用 memcache 来减少对数据存储的命中(ndb 会自动执行此操作)。

以上是关于GAE Channel API 消息仅广播给一个客户端?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Phoenix 控制器向 Channel 广播消息?

总结了才知道,原来channel有这么多用法!

GAE Java API 频道

VB6 应用程序通过 winsock 发送 UDP 广播消息 - 仅每秒发送一次消息

SpringBoot 集成Redis pub/sub

告别 Flutter Channel,调用 Native API 仅需一行代码!