Skip to main content
 首页 » 编程设计

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

2025年05月04日25fff_TT

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

多页加载

我似乎无法在多个页面加载中重复使用同一个 channel 。尝试重新连接到新页面上的 channel 会导致代码为 0 且无说明的错误。我目前将 channel token 存储在数据存储中并将 token 注入(inject)页面。如何在同一个选项卡中为多个页面加载重复使用同一个 channel ? This answer建议 iframe 的方式。使用 iframe 重新编码网站是我最好的选择吗?

标签

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

提前致谢

亚伦

请您参考如下方法:

我一直在调查 DEV 中奇怪的 channel 断开连接,看起来 Channel API 在实时环境中比在开发环境中稳定得多。

我创建了一个(有点)最小的 AppEngine 应用程序,它创建了一个跨页面加载持续存在的 channel 。该应用重用数据存储中的 channel token 。

应用代码在这里:https://github.com/aaronlifshin/channeltest 该应用程序本身位于 http://channeltestaaron.appspot.com/。

如何使用?

当您转到 http://channeltestaaron.appspot.com/ANYSTRING 时该应用程序将创建一个 channel ,然后将此 channel 重新用于您打开的形式为 http://channeltestaaron.appspot.com/ANYTHING 的任何其他 URL。

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

所有页面都有1秒的延迟来测试 channel 的持久性。这 1 秒的延迟会导致 channel 在开发中消失​​。

希望对您有所帮助。

亚伦