我正在使用带有socket.io的Node.js进行多人游戏。有游戏室和玩家可以加入不同的房间。那部分工作正常。
现在,我想为因任何原因导致Node服务器崩溃的可能性做好准备。我有Node将数据备份到Redis,如果崩溃,它会自动重启,从Redis取回数据并继续正常运行。
这就是我想要的,但我对一件事感到困惑。由于每个套接字都由其ID标识,服务器如何知道在重启后哪个用户订阅哪个房间?套接字ID是否仍然有效?或者它们是否需要以某种方式重新分配(可能基于唯一的用户ID)?
答案 0 :(得分:1)
说实话,我从未使用过socket.io,但我使用过sockjs。我不知道实现差异是什么,但sockjs也有自己的ID标识的每个连接(就我所见,这是一个UUID)。但每次用户重新连接时ID都会更改,因此我认为这不是识别用户的有效方法。
也许您应该存储一些固定的用户身份(例如电子邮件地址,用户名),并通过该参数重新定位用户(这是我通常做的事情)。