如何判断一个用户是否离开站点?
比如:
1. 现在只打开一个tab访问v2ex,然后把该tab关闭了
2. 直接关闭浏览器
以上两种都算离开站点了
如果用户一直打开站点,没有关闭,则不算作离开站点。
总而言之:只要有任何一个tab页在打开着站点,就不算作离开站点。
该如何准确实现记录呢?

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