首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不关闭套接字的情况下重新启动实时node.js服务器?

在不关闭套接字的情况下重新启动实时node.js服务器?
EN

Stack Overflow用户
提问于 2016-08-17 02:15:12
回答 2查看 1.4K关注 0票数 0

我们有一小部分使用node.js的多玩家服务器,目前在高峰使用期间每分钟提供大约100万条消息。有没有一种方法可以“优雅地”重启服务器而不导致套接字丢失?基本上,我想知道处理重启的最好方法是什么,因为它通常会对玩家造成很大的干扰?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-17 04:52:08

当进程退出时,操作系统通过关闭属于它的所有套接字来清理它们。因此,不可能只进行一次简单的服务器重启并保留套接字连接。

在某些操作系统中,您可以将套接字的所有权从一个进程传递给另一个进程,因此在技术上,您可以创建一个临时进程或先前存在的父进程),将套接字的所有权传递给另一个进程,重新启动服务器,然后将所有权转移回新启动的进程。我从未尝试过(或听说正在做),但它听起来可能是可行的。

下面是在node.js中使用child.send()将套接字传输到子进程的some information。这似乎只能针对由net模块创建的node.js套接字来完成,并且有一些关于这样做的警告,但这是可能的。

如果没有,通常的解决方法是让客户端在连接关闭时自动重新连接。如果处理得当,这对客户端来说是相当透明的(除了服务器未运行的瞬间)。

票数 1
EN

Stack Overflow用户

发布于 2016-08-17 03:53:45

使用redis或一些内存中的数据库来存储连接,这样即使在服务器重新启动后,您也可以轻松地重新连接,而不会丢失任何会话或连接。如果适合您的需要,请尝试此方法。此外,请注意,在重新启动期间,连接可能会中断,但由于具有持久性,您将很容易再次连接。socket.io-redis

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38981816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档