需要做一个功能,统计用户某天在线玩游戏的时长,打算根据用户建立和断开 websocket 的时候记录这个时间点,然后去统计。
websocket 是前端去连接的,连接成功是可以知道的,可以上报给后端接口,那么断开 websocket 如何去捕获呢?有可能用户会直接关闭浏览器,前端这个时候无法去捕获吧。
另外,假设记录表设计如下:
id userid current_time day type
1 111 22222 2017-06-20 1
2 222 23333 2017-06-20 2
3 333 33333 2017-06-20 1
4 444 38999 2017-06-20 2
如何统计时长?
从websocket判断连接断开,断开时获取这个连接的创建时间,然后写入数据库。
如果websocket前面有nginx等反代,可以通过nginx的日志统计。当然你得想办法把用户信息和日志对接起来。