3

我想知道如何检查是否有人离开了站点/页面并在他们离开后执行操作。我在这里阅读,我发现了这个:

不,没有。您能做的最好的事情是每 X 秒发送一个 AJAX 请求(也许只有当用户移动鼠标时)。如果服务器在 2X 秒内没有收到任何请求,则假设用户离开了。

这就是我之前的计划,但是如果服务器停止发送请求,你怎么能让服务器做一些事情(在我的情况下是从数据库中删除它们)?我能想到的一个例子是,当您在 Facebook 上访问该网站时,您如何告诉他们您在这里并且在线,这在聊天中将您标记为在线,但当您离开时,它会将您标记为离线。这怎么可能?

编辑:在使用 cron 作业一段时间后,我发现网络托管网站不喜欢经常运行 cron 作业以在您的网站上产生“现场”感觉。所以相反,我找到了 node.js,它的工作效率提高了 1000 倍,而且更简单。我建议任何有同样问题的人使用它,购买托管非常便宜,而且学习简单,如果你知道 Javascript,你可以构建它没问题。一定要知道异步是如何工作的。

4

3 回答 3

2

一种不常见的方法是定期运行一个 cron 作业来检查用户列表,如果他们已经不活动 X 分钟,则执行 XYZ。

于 2012-10-08T18:54:58.823 回答
1

Facebook 通过 Jabber 服务使用 XMPP 协议与用户建立持续实时的连接。然而,实施一个根本不是一件容易的事。正如评论中提到的,最简单的解决方案是让客户端每隔几秒钟向服务器发出一次 AJAX 请求,以便服务器可以检查用户是否仍在查看该站点。

您可能想查看我的问题,这可能与您的问题有关。

于 2012-10-08T18:53:27.850 回答
1

我在开发过程中唯一记得的方法不是 100% 可靠的,因为许多因素实际上并且很可能导致它失败,甚至不能完全运行。直到并包括禁用 JavaScript 的人。这与今天的网站组合方式不太可能。但是人们可以选择将其关闭,然后恶意行为的人也倾向于将其关闭。

无论如何,我读过但从未投入太多股票的方法是onunload()事件。你绑在<body>标签之类的东西上。

例子:

<body onunload="myFunction()">

哪里myFunction()有一点 JavaScript 来做你想做的任何事情。

由于许多原因再次不是非常可靠,但我认为它是几乎所有客户端语言中最好的。

于 2012-10-08T18:55:03.810 回答