2

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

多个页面加载

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

标签

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

提前致谢,

亚伦

4

2 回答 2

1

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

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

该应用程序的代码在这里:https ://github.com/aaronlifshin/channeltest 该应用程序本身在http://channeltestaaron.appspot.com/上运行

如何使用它?

当您访问http://channeltestaaron.appspot.com/ANYSTRING时,该应用程序将创建一个频道,然后将此频道重新用于您以http://channeltestaaron.appspot.com/ANYTHING形式打开的任何其他 URL

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

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

希望这会有所帮助。

亚伦

于 2013-09-24T22:50:56.227 回答
0

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

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

于 2014-01-10T22:09:24.700 回答