1

我有一个 2 人站点聊天(我们和任何提问的客户),当他们通过任何方式断开连接时,我想显示“ $client已断开连接”,包括:

  • 在浏览器上按
  • 关闭窗口
  • 通过任务管理器关闭浏览器

我还没有找到一种可靠的方法(尝试使用 JavaScript 的 onunload 和 onbeforeunload 属性)来处理这个问题,尤其是在使用任务管理器的情况下。

我想做的是让用户不断调用 AJAX 脚本,在其中增加一些服务器端值;当他们的页面关闭时,这种增量将停止。在我们这边,继续运行一个脚本来检查该值是否已更改。如果在任意数量的检查(例如 3 次)之后它没有改变,那么用户可能已经断开连接,它会显示消息。

但这并不优雅,而且“可能断开连接”并不是一个真正有把握的结论。

您将如何执行此操作,以确保仅在用户断开连接时才出现断开连接消息。

4

1 回答 1

1

实际上,您无法在 HTML/JS/CSS 上真正实现这一点,一旦用户离开,他们就会断开连接 - 嗯.. 效率不高。

您可以尝试降低轮询之间的间隔,但这具有消耗带宽以及降低性能的负面影响(像永远循环一样的持续轮询)

他们称之为彗星,这是一个包含“恒定连接”方法的术语 - 其中之一是轮询。文章中还有“中间人”方法,您可以在其中使用 Flash 等插件及其流媒体功能。

于 2012-03-03T06:42:55.560 回答