GAE频道api

时间:2012-12-30 01:02:37

标签: java javascript google-app-engine sockets channel

我正在使用频道api(java backend - javascript frontend)构建一个聊天应用。每次用户获得用户名时,都会在剩余用户屏幕中列出。新用户将从频道发送给每个用户并显示。但我想在关闭窗口时从列表中删除用户。我真的想知道如何识别用户是否关闭了他的窗口与渠道api?

2 个答案:

答案 0 :(得分:0)

直接执行此操作不是通道API;在JavaScript中,您可以使用onunload来确定用户何时离开页面,然后像往常一样触发频道API。然而,并不能保证它会被调用(想想如果我只是硬关闭我的机器会发生什么)。您可以使用JavaScript在服务器上提供心跳并实现逻辑,说“如果我没有在X秒/分钟内从客户端听到任何内容,那么请考虑该用户的会话已关闭。”

答案 1 :(得分:0)

我在python上做同样的事情。您需要做的就是启用presence入站服务,然后每当客户端断开连接时,您将在/ _ah / channel / disconnected /上接收请求。从请求参数中,您可以确定客户端是谁并发送将其从应用程序的用户列表中移除(如果存在)并且(如果需要)向其余客户端发送频道消息,以便将他从他们在其上看到的列表中删除