socket以及ws连接该怎么缓存
最近看《深入浅出》的时候看了内存管理这一章,想到自己项目上的一些细节。 **起因:**我的项目中设计到同时用socket和websocket两块,连接我需要保持,并且我用了一个标识来区别,以便我使用的时候快速找到它。
需要id的原因:
- 在web端做某种操作的时候,通过websocket发送回node server,再向某个socket发送。
- 某个socket接收到数据时,经过处理,通过websocket通知前端页面。
但是我目前是放在一个js中,我当他是个app context模块在用。 也就是书中提到的用对象做缓存问题。 结构大致如下:
{
socketContainer : {
id : socket,
...
id : socket
},
wsContainer : {
id : websocket,
...
id : websocket
}
}
也就是说它可能是无限制增长(如果系统条件允许的话),不知会不会出现内存溢出的问题。
问题:如果不这样缓存连接的话还有没有别的办法? npm上也没搜到关于socket连接管理的模块。
3 回复
缓存的数据最好设置过期时间,websocket也最好对客户断开连接的事件响应来删除缓存中的数据,socket通过发送心跳包来检测当前缓存的socket是否处于活动状态
@joney-pinkman 常规的缓存我准备放到redis中,连接的可用这个倒还好,一方面我做了timeout,并且做了定时扫描各个连接的状态。 只是不知道用 id : connection的策略好不好。