专业的编程技术博客社区

网站首页 > 博客文章 正文

Session与WebSocket,在线统计误导了多少人

baijin 2025-04-09 14:06:08 博客文章 11 ℃ 0 评论

前阵在做WebSocket的一些项目测试时,发现网上很多文章都说可以用Session来统计在线人数,我认为这里有误导的成分。

Session对于每个访客,会产生一个唯一的session_id,所以访客和session_id可以理解为class(类)和private(私有成员)的关系,不同的访客就是不同的class,不同的session_id就是不同的private成员。

所以访客A是访问不了访客B的Session数据的。

Session在服务器的存活时间默认情况下是1440秒,即24分钟。不过多数情况下大家都会根据自己的需要来设置这个值。那么问题就来了,当访客是非正常退出,比如最常见的就是直接关闭浏览器,这时候的Session数据因为还在存活期内、又没有接收到变更指令,所以是不会变化的,不管是写入数据库还是检查session_id文件,都无法有效避免这种情况。(如下图1)

上图是使用网上一个测试样例的测试结果。结果显示,在线的访客还有好多,红色的都是。而实际上除了1个是真正在线的,其他的都已经不在线了,连浏览器都关掉了的。

由此可见,用Session来统计在线人数的方案放到项目中是行不通的。要实现实时统计在线人数,可以使用WebSocket技术。

WebSocket技术广泛应用于日常生活中,如扫码登录、扫码支付等多端互动共同完成一件事的场景。(如图2)

上图是一个WebSocket项目的测试场景,实现多端互动完成扫码支付和即时通知的功能。不过使用WebSocket技术来统计在线人数,是不是有点大材小用呢?

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表