我正在使用NodeJS来运行套接字服务器(使用socket.io).当客户端连接时,我希望打开并运行一个可以完成大量工作的模块.尽管我小心翼翼地尝试尽可能多地捕获,但是当这个模块抛出错误时,它显然会使用它来取消整个套接字服务器.
有没有办法可以将两者分开,所以如果连接的客户端模块脚本失败,它不一定会占用整个服务器?
我假设这是子进程的用途,但文档没有提到启动其他节点实例.
如果客户端断开连接,我显然需要终止进程.
我假设你所谈论的这些模块是JS代码.如果是这样,您可能想尝试使用vm模块.这使您可以在单独的上下文中运行代码,还可以try / catch执行特定代码的执行.
您可以将节点作为单独的进程运行,并使用spawn监视数据,然后观察stderr/stdout/exit事件以跟踪任何进度.如果客户端断开连接,则kill可用于终止进程.您将不得不映射客户端和生成的进程,因此它们的断开连接事件将触发正确关闭进程.
最后,uncaughtException事件可以用作任何错过的异常的"catch-all",使得服务器不会被完全杀死(当然信号有点例外).
| 归档时间: |
|
| 查看次数: |
1979 次 |
| 最近记录: |