背景:之前开发的聊天功能,用的人太少,考虑再三就决定去掉聊天室的功能了,改做一些其他有意思的事情,比如目前已经开发好了的左边栏当前在线人数,阅读时长统计(正在开发中)
遇到的问题:
•页面虽然是react写的,但是nextsj服务端渲染的,不是单页应用就不能像单页应用那样有全局变量存储整站的websocket•服务端使用nginx作为代理服务器(之前是kong,后来干掉了),nginx proxy模块默认有 read_timeout/send_timeout 默认值 60s•服务端socket存储数据结构选型
实现思路:
因为是多页模式,就需要每个页面初始化一个wss连接,按cookie去重以后就是当前在线人数。
页面wss重联机制,毕竟断网是很常见的
nginx:proxy_read_timeout/proxy_send_timeout默认60s超时,心跳检测,只需要服务端在60s内定时发送ping(0x9)消息就可以了,浏览器会自动回复pong消息
服务端存储socket结构体,没有向指定socket写数据的需求,不需要额外维护socket的数据结构,维护一个cookie在线页面数即可
领取专属 10元无门槛券
私享最新 技术干货