我正在使用NodeJS来运行套接字服务器(使用socket.io)。当客户端连接时,我想要打开并运行一个模块,它会执行一些操作。即使我尽可能地尝试捕获,但是当这个模块抛出一个错误时,它显然会将整个套接字服务器取下来。NodeJS - 子节点进程?
有没有一种方法可以将两者分开,如果连接的客户端模块脚本发生故障,它不一定会关闭整个服务器?
我假设这是子进程的用途,但文档没有提到启动其他节点实例。
如果客户端断开连接,我显然需要终止进程。
我正在使用NodeJS来运行套接字服务器(使用socket.io)。当客户端连接时,我想要打开并运行一个模块,它会执行一些操作。即使我尽可能地尝试捕获,但是当这个模块抛出一个错误时,它显然会将整个套接字服务器取下来。NodeJS - 子节点进程?
有没有一种方法可以将两者分开,如果连接的客户端模块脚本发生故障,它不一定会关闭整个服务器?
我假设这是子进程的用途,但文档没有提到启动其他节点实例。
如果客户端断开连接,我显然需要终止进程。
正如其他海报指出,你可以充分利用“虚拟机”模块,但你也许可以从响应其余告诉,这样做增加了显著的复杂性。
而且,从“虚拟机” DOC:
Note that running untrusted code is a tricky business requiring great care. To prevent accidental global variable leakage, vm.runInNewContext is quite useful, but safely running untrusted code requires a separate process.
虽然我敢肯定,你可以运行在一个子进程的新实例的NodeJS,这里最好的做法是了解您的应用程序能够而且将会失败,然后进行防御性编程以处理所有可能的错误状况。
如果你的代码的某些部分“走(S)关闭整个服务器...”,那么你真的理解为什么出现这种情况和解决问题,而不是依赖于另一个进程的要求工作,保护你设计和建立生产品质的服务。