socket以及ws连接该怎么缓存
发布于 10 年前 作者 luoyjx 5026 次浏览 最后一次编辑是 8 年前 来自 问答

最近看《深入浅出》的时候看了内存管理这一章,想到自己项目上的一些细节。 **起因:**我的项目中设计到同时用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的策略好不好。

@luoyjx 这个当然没问题,这个帖子应该对你有帮助

回到顶部