1
icy37785 2019-07-11 14:16:21 +08:00 via iPhone 1
ajax 或者 websocket 二选一
|
2
erisfloralia OP @icy37785 谢谢回答,我目前只会使用 onbeforeunload 来监控是否离开页面然后 ajax 往后台传数据,但是这个函数在火狐和 ie 没用?或者是我不太会用吗?看来只能用 websocket 了。 = =
|
3
icy37785 2019-07-12 09:02:58 +08:00 1
@erisfloralia 首先,在线人数的统计肯定是 websocket 效果最好,不管性能,还是精确度都比 ajax 要好,其次感觉你对于 ajax 的实现想复杂了,并不需要监控是否离开页面,ajax 轮询就可以了,前台访问在线人数接口,后台记录访问的客户端,设置过期时间就行了,统计客户端数量就可以知道在线人数。
|
4
erisfloralia OP @icy37785 那么设置过期时间然后数据库查表应该会造成一定时间的延迟吧。无法马上统计出不在线的用户。为何 websocket 好一点(其实我还没用过 websocket,不清楚,只是大概了解一点)= =
|
5
icy37785 2019-07-12 11:38:45 +08:00 1
@erisfloralia 两个问题分开来回答,1.过期时间设置足够短,轮询设置足够快,延迟就可以忽略不计,比如一秒轮询一次,数据一秒过期,那么延迟就一秒,但是这样对服务器的压力就很大,所以轮询速度和服务器压力之间得自己去找到一个合适的平衡的事件间隔。
2.websocket 的优点,就是上面说的,ajax 轮询的缺点,websocket 实时性好,对服务器的压力小。 理解了大概的原理之后你应该想得明白到底是怎么回事的,其他的你上网查查资料,网上挺多的。 |
6
erisfloralia OP @icy37785 好的,谢谢大佬详细解答 = =
|