AppEngine Channel API – 检查频道是否仍处于打开状态的最佳方式(服务器端)

栏目: 后端 · 发布时间: 5年前

内容简介:我在AppEngine上构建了社交网络/约会类型应用程序,目前正在添加基于Channel API构建的聊天.但是,我遇到的问题是用户可能会在聊天过程中重新加载或导航到新页面(就像在Facebook中一样).这意味着服务器不容易知道它是否应该为给定客户端生成新的通道ID令牌,或者是否已经为给定客户端分配了通道令牌.如果有一种方法可以检查(服务器端)特定客户端是否已打开某个频道,那将非常有用.例如,如果我为客户端“Jack”分配了一个“Jack-Jan-21-2010”的频道ID,那么我希望能够在服务器端检查是

我在AppEngine上构建了社交网络/约会类型应用程序,目前正在添加基于Channel API构建的聊天.但是,我遇到的问题是用户可能会在聊天过程中重新加载或导航到新页面(就像在Facebook中一样).这意味着服务器不容易知道它是否应该为给定客户端生成新的通道ID令牌,或者是否已经为给定客户端分配了通道令牌.

如果有一种方法可以检查(服务器端)特定客户端是否已打开某个频道,那将非常有用.例如,如果我为客户端“Jack”分配了一个“Jack-Jan-21-2010”的频道ID,那么我希望能够在服务器端检查是否已经有一个与该ID相关联的频道“杰克-JAN-21-2010\” .通过观察onerror()和onclose()回调可以在客户端跟踪(有点),但是我看不到任何服务器端允许我检查与给定ID关联的通道是否是已经开放了.

有没有人知道在使用AppEngine Channel API的同时检查(服务器端)是否已打开频道的智能方法?

第1部分:解决您的问题

如果您确实需要跟踪客户端连接,请参阅下面的第2部分,但我不确定您的问题是否要求您解决问题.

让我看看我是否可以回复你的问题:你正在编写一个聊天应用程序,但这是一个不完全是AJAX的网站(就像gmail一样);该网站包含页面导航,您可能需要在用户点击指向其他页面的链接后重新设置您的频道.当用户导航时,将呈现新页面,并且您希望避免在该点获取新标记;您希望重用具有相同客户端ID的现有令牌和通道.

如果这是正确的,我有两个备用解决方案,一个简单但用户体验不佳,一个更棘手,但最终结果更顺畅.

>保留cookie中的令牌.重新渲染页面时,只需使用cookie中的标记,而不是再次调用channel.create_channel.当令牌过期时,您将获得一个错误回调,就像用户留在原始页面上一样;此时,再次调用channel.create_channel.这个问题是由于Comet连接的性质,重新连接可能很慢(在坏情况下最多10秒或更长时间).

>在iframe中包裹与聊天无关的整个网站.将频道创建代码和UI放在外部iframe中.这样,您不必在每次用户导航时重新连接.这可以避免导航停机.请注意,orkut使用这种技术,浮动div,因为少量的Firebug调查将揭示.

第2部分:您的功能请求

如果结果我误解了你真的需要跟踪客户端连接:

现在没有内置的方法来检查客户端是否已连接到客户端ID标识的通道.

但是,我现在正在努力添加“在线状态”(在聊天意义上),这样当您的应用程序连接或断开与使用给定客户端ID创建的通道时,您的应用程序可以注册以获取帖子.您也可以“探测”状态,查询给定的客户端ID是否已连接(仍在处理此部分的详细信息).

请注意,这不是基于令牌的,而是基于客户端ID.

我还没有明确的发布日期,但正如我所说,我正在积极研究它.

在此期间,您可以使用来自客户端的心跳HTTP请求返回到您的应用程序,该应用程序每隔一分钟就会说“嘿,我还在这里”.您需要运行某些任务,例如每2分钟运行一次,并将未签入的任何客户端标记为非活动状态,并且您需要将此数据存储在某个位置.

翻译自:https://stackoverflow.com/questions/4804129/appengine-channel-api-best-way-to-check-if-a-channel-is-still-open-server-sid


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

知识的边界

知识的边界

[美] 戴维·温伯格 / 胡泳、高美 / 山西人民出版社 / 2014-12-1 / 42.00元

大数据时代反思知识 因为事实不再是事实,专家随处可见 所有确定性都被连根拔起,话题再无边界,没有人对任何事情能达成一致。 在互联网的引领下,知识现在已经具有了社交性,流动且开放。温伯格向我们展示了这些特点如何可以为我们所用。 ——马克•贝尼奥夫(云计算之父,著有《云攻略》) 这本富有洞见的著作,奠定了温伯格作为数字时代最重要的思想家之一的地位。如果你想要理解信息洪流涌......一起来看看 《知识的边界》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具