2

有没有办法检测用户是否与互联网断开连接?当您想发布问题时,stackoverflow 的方式。我想不出任何方法来做到这一点。有人可以对这个主题有所了解吗?

4

2 回答 2

5

您可以在关闭窗口时向 PHP 脚本发送 AJAX 请求:

window.onbeforeunload = function(){
    // Request goes here
}

或者,您可以使用 websocket 技术(您可以使用phpDaemon)永久连接服务器,这样您就可以知道用户何时与 Internet 或您的站点断开连接,或者定期(使用setInterval功能)ping 您的服务器。

于 2012-08-08T12:15:34.757 回答
3

我猜 Stack Overflow 使用AJAX,这是一个 JavaScript 驱动的程序,在浏览器内的客户端执行。此 ajax 设置负责在发布新答案时通知用户,并让他们有机会加载所述新答案而无需重新加载整个页面。

并且这个构造有一种方法来检测与服务器的通信中的错误,它被解释为用户被断开连接,从而导致警告。

但是,这要求用户仍然打开浏览器。JavaScript 和 AJAX 中还有各种其他函数可以在用户关闭页面时执行某些操作,但它们都不被认为始终有效。毕竟没有银弹。

从服务器端,可以监视用户客户端的 AJAX 的持续 ping-pong,并在该 ping 消失时执行某些操作。比如:用户在过去两分钟内每 5 秒 ping 一次我们,但现在这个 ping 不见了。

主要问题在于 PHP 的原理,每个页面基本上都是独立存在的。当请求被获取时,页面被加载并创建,但在请求结束时,当前页面实例被拒绝存在,就像每个没有保存在其他地方(cookie、会话、数据库)的变量都丢失了一样。

于 2012-08-08T12:18:02.400 回答