是否可以重启NodeJS + socket.io 0停机时间?

时间:2016-11-10 21:58:29

标签: node.js sockets socket.io

我正在使用PM2运行游戏服务器来管理我的应用程序,我搞乱了他们的群集模式:

pm2 start app.js -i max
pm2 reload

我认为停机时间大约为0,但我的所有插座都断开了。我不能用

{reconnection: true} 

对于我的客户,因为在死套接字和服务器本身上都有重要的东西,丢失的数据会导致浏览器崩溃。

每次我需要更新我的服务器js文件时,我的所有客户端都会丢失连接,这很糟糕。

1 个答案:

答案 0 :(得分:0)

关闭服务器(或突然重新启动)将导致内存中这些项目的数据丢失。 NodeJS可能正在快速重启,但所有这些脚本和对象状态都会丢失。

你的策略可能是双重的: 1)将客户端信息存储在数据库中,可能是像Redis这样的缓存数据库,也可能是服务器重新启动时可以存在的缓存数据库。每个客户端都有一个会话令牌,用于标识它们以及您希望与该客户端保留的数据。 2)当客户端连接到服务器时,将该会话标识符存储在连接上。当客户端(自动)重新连接时,他们必须通过你的序列来a)重新建立他们的会话b)重新加入他们的socket.io房间c)恢复他们的状态(或获得任何错过的更新)。