如何判断一个用户是否离开站点?
比如:
1. 现在只打开一个tab访问v2ex,然后把该tab关闭了
2. 直接关闭浏览器
以上两种都算离开站点了
如果用户一直打开站点,没有关闭,则不算作离开站点。
总而言之:只要有任何一个tab页在打开着站点,就不算作离开站点。
该如何准确实现记录呢?
1
ryd994 2015-03-23 17:38:07 +08:00 via Android
挂一个js,一直发ajax签到
|
2
typcn 2015-03-23 17:39:31 +08:00
开一个 WebSocket 连接,切换 Tab 之后,浏览器就不会再继续处理这个 WebSocket 的消息。
关掉这个 Tab 之后, 服务器会瞬间收到 Socket Close |
3
zgxltxz 2015-03-23 17:40:25 +08:00 via Android
不限时session
|
6
imn1 2015-03-23 17:55:24 +08:00
目前通用做法是 session 超时,这个是属于延时判断,非实时
实时判断需要长连接或者server push/client pull,参考chat room |
7
loading 2015-03-23 17:55:29 +08:00
mousemove
blur |
10
rock_cloud 2015-03-23 18:19:30 +08:00
@hussion 没关系吧,原来的断了,新的又连上了,不是照样可以知道用户在线么。
|
11
hussion OP @rock_cloud 问题就再也你如何判定何时离开
|
12
Havee 2015-03-23 18:53:45 +08:00
b/s的为什么非要做成c/s的,你确认你服务器吃得消?
|
13
airyland 2015-03-23 19:43:28 +08:00 1
@hussion 这个我处理过。socket close 时不是立即设置offline, 而是延时5s后才offline。当刷新页面后socket connect时清除offline定时器就行了。
|
14
futursolo 2015-03-23 19:55:51 +08:00
WebSocket + 延时(超过1s才算断开)
|
15
housne 2015-03-23 20:56:39 +08:00
|
17
gihnius 2015-03-24 08:32:21 +08:00
|