如何判断一个用户是否离开站点?
比如:
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 ![]() @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 |