Node.js 2015年的节点和线程

Node.js 2015年的节点和线程,node.js,Node.js,我希望有一个while(1)forever循环来与设备[TCP]并行通信。想法是为每个IP地址[TCP连接]启动线程,并让它们永远通信。目前我必须支持的设备数量是200+ 问题是 nodej介绍如何实现while(1)策略,以及如何根据其事件计算超时和响应时间 NodeJS将能够处理200多个线程?我以前在Windows应用程序中这样做过,它工作正常我有一台服务器级机器[16核] 有没有建议的最佳做法 我是否应该保留nodej来处理web流量,并将通信服务器[TCP和Thread]代码移动到某种

我希望有一个while(1)forever循环来与设备[TCP]并行通信。想法是为每个IP地址[TCP连接]启动线程,并让它们永远通信。目前我必须支持的设备数量是200+ 问题是

  • nodej介绍如何实现while(1)策略,以及如何根据其事件计算超时和响应时间

  • NodeJS将能够处理200多个线程?我以前在Windows应用程序中这样做过,它工作正常我有一台服务器级机器[16核]

  • 有没有建议的最佳做法

  • 我是否应该保留nodej来处理web流量,并将通信服务器[TCP和Thread]代码移动到某种导航语言中


  • 如果您认为
    循环是这里的关键,那么您就严重误解了Node.js事件循环模型。这完全无关。内置了一个功能强大的事件调度系统,无需在此基础上构建自己的系统

    Node.js可以处理线程吗?某种程度上。不是真的。如果您有需要线程的CPU密集型任务,您应该考虑,但多进程模型是传统上由Node推动的

    请记住:节点是关于非阻塞异步操作的,所以线程不会在这方面帮助您。这与Java不同,Java中有数千个线程在进行阻塞调用。您不需要创建线程来处理每个连接,只需要编写异步代码来在同一个线程上处理它们

    您应该尝试将您的解决方案模块化。任何繁重的任务都应该包含在可以通过事件总线调度的任务中,这样您就可以管理工作流了

  • 看看这里-,可能是
    直到
    直到
    永远
    都是你要找的

  • 是的,您可以使用集群扩展16个进程(每个CPU核心一个)

  • 使用回调和Caolan异步,不编写同步代码

  • 很难回答的问题是,围棋语言可能适合这项任务——另请参见

  • 线程和
    while(true)
    循环很少是node.js中的答案。Node.js的设计目的不是通过线程处理并发连接,而是通过基于事件的异步操作。它通常能够在单个核心上处理数千个并发连接()