0

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

4

2 回答 2

0

需要直接执行此操作的不是通道 API;在 JavaScript 中,您可以使用它onunload来确定用户何时离开页面,然后像往常一样触发通道 API。但是,不能保证它会被调用(想想如果我硬关闭我的机器会发生什么)。您可以使用 JavaScript 提供心跳并在服务器上实现逻辑来表示“如果我在 X 秒/分钟/任何时间内没有收到来自客户端的任何消息,则认为该用户的会话已关闭。”

于 2012-12-30T01:13:09.340 回答
0

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

于 2012-12-30T03:43:30.867 回答