GAE 通道接口
Posted
技术标签:
【中文标题】GAE 通道接口【英文标题】:GAE channel api 【发布时间】:2012-12-14 18:35:27 【问题描述】:我正在使用频道 api(java 后端 - javascript 前端)构建一个聊天应用程序。每次用户获得用户名时,它都会在剩余用户屏幕中列出。新用户从频道发送给每个用户,并将被显示。但如果他们关闭窗口,我想从列表中删除用户。我真的想知道如何识别用户是否使用频道 api 关闭了他的窗口?
【问题讨论】:
【参考方案1】:需要直接执行此操作的不是通道 API;在 JavaScript 中,您可以使用 onunload
来确定用户何时离开页面,然后像往常一样触发通道 API。但是,不能保证它会被调用(想想如果我硬关闭我的机器会发生什么)。您可以使用 JavaScript 提供心跳并在服务器上实现逻辑来表示“如果我在 X 秒/分钟/无论如何都没有收到来自客户端的任何消息,则认为该用户的会话已关闭。”
【讨论】:
【参考方案2】:我在 python 上做同样的事情。您需要做的就是启用presence 入站服务,然后只要客户端断开连接,您就会在/_ah/channel/disconnected/ 上接收请求。从请求参数中,您可以确定客户是谁并发送从应用程序的用户列表中删除他(如果存在)和(如果有必要)向剩余的客户端发送一条频道消息,以将他从他们看到的列表中删除
【讨论】:
以上是关于GAE 通道接口的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 应用程序 - 使用 GAE 通道 javascript API 调用 channel.open() 时出错