如何使用 AppEngine Channel API 编写类似 Facebook 的浏览器通知



我正在编写一个Python AppEngine应用程序,并且需要在某些后端事件发生时向浏览器客户端发送通知。我正在使用通道 API。 我有两个问题:同一选项卡内的多个页面加载和多个选项卡。

多个页面加载

我似乎无法在多个页面加载中重复使用同一通道。 尝试重新连接到新页面上的频道会导致代码为 0 且没有说明的错误。 我当前将通道令牌存储在数据存储中,并将令牌注入页面。 如何在同一标签页中重复使用同一渠道进行多个页面加载? 这个答案表明 iframe 是方式。使用 iframe 重新编码网站是我最好的选择吗?

制表符

我的理解是,我需要为用户打开的每个选项卡生成一个客户端 ID。我应该如何生成一个客户端 ID,该 ID 对于每个打开的选项卡都是不同的? 我可以在服务器上增加一个 ID,这是最好的方法吗?

提前感谢,

亚伦

我一直在研究 DEV 中奇怪的通道断开连接,看起来通道 API 在实时环境中比在开发环境中稳定得多。

我创建了一个(有点(最小的 AppEngine 应用程序,该应用程序创建了一个在页面加载中持续存在的通道。 应用重复使用数据存储中的通道令牌。

该应用程序的代码如下:https://github.com/aaronlifshin/channeltest该应用程序本身在 http://channeltestaaron.appspot.com/

如何使用?

转到 http://channeltestaaron.appspot.com/ANYSTRING 时,应用将创建一个频道,然后将此渠道重新用于您打开的表单 http://channeltestaaron.appspot.com/ANYTHING

然后,您可以转到"http://channeltestaaron.appspot.com/broadcast"以将消息发送到您打开的所有其他页面。

所有页面都有 1 秒的延迟来测试通道的持久性。 此 1 秒延迟将导致通道在 dev 中消失。

希望这是有帮助的。

亚伦

多页加载:根据这里的答案,您可以重复使用令牌,但需要确保一次在一个页面上使用它(避免页面重新加载并拥有使用哈希片段的单页应用程序也可能是一个好主意(。

选项卡:生成客户端 ID 的最直接方法是创建一个随机字符串,例如这样。

最新更新