节点线程是模拟循环的错误地点吗?

假设有一个天气模拟器产生/计算天气,每隔0.5秒一次setInterval就会启动并执行一系列计算,以使读数和处理数据成为可读的数据。

然后它会通过套接字触发相关数据login,也许只有当数据实际发生变化时。

那么,将天气模拟/发生器自己运行在subprocess中,并将I / O保存在节点的单线程中会更好吗?

或者,会创buildlocking要求吗?

我认为应该引导你的原则是关注的分离。 你的node.js服务器是一个通讯pipe道。 你的天气模拟器就是这样。 其中之一的变化是不太可能涉及到其他。 这也是一个更具可扩展性的select,如果以后你的天气模拟器变得更重,或者你开始获得比预期更多的用户。

如果networking客户端可以的话,我确定他们会直接订阅天气预报,但是不要让你觉得你应该用模拟器来混淆websocket。

如果计算是激烈的,我强烈build议您将它们作为subprocess运行,并保持node.js事件循环响应。 如果您收听事件数据的childs stdout并完成,则可以在数据可用时立即发送数据。

确保你使用asynchronous读写,这样你就不会开始阻塞事物,你不必担心锁。