为什么Node无法在Windows中的工作程序中设置命名管道服务器?

时间:2016-04-17 00:41:19

标签: node.js trailsjs

我正在努力在我正在开发的项目中启用群集支持。这个问题直接来自集群模块上Nodejs文档中的声明:

  

来自:https://nodejs.org/api/cluster.html#cluster_cluster

     

请注意,在Windows上,尚无法在工作程序中设置命名管道服务器。

  1. 这究竟是什么意思?
  2. 这有什么含义?
  3. 从文档以及我所做的其他研究来看,这个限制的实际实际后果对我来说并不清楚。

1 个答案:

答案 0 :(得分:2)

进程可以公开命名管道作为与其他感兴趣方进行通信的方式 - 即。一个nginx服务器可以公开一个命名管道,其中所有传入的请求都将被发送(只是一个想法 - 我不确定nginx是否可以这样做)。

从Node.js进程(不是集群工作者),然后你可以启动一个http服务器(甚至是普通的TCP服务器)来监听发送到这个命名管道的消息:

http.createServer().listen('\\.\pipe\nginx')

.listen()方法签名are here的文档,特别是此部分感兴趣:

  

启动服务器,侦听已绑定到端口,UNIX域套接字或 Windows命名管道的给定句柄的连接

但是,根据警告,群集工作人员无法使用此功能,原因超出我的理解。

Node.js中的

Here is a relevant commit暗示了这个限制。您可以通过打开群集的Markdown文档找到它,查看git blame并进一步了解历史记录,直到您到达提交此笔记的提交。

正常的进程间通信不受此限制的影响,因此集群在Win32上的工作方式与在Unix系统上的工作方式相同。

  

注意:经过深思,这个nginx示例有点误导,因为根据我的理解,命名管道不能用于有状态双向通信。它只是单向的,即。源 - >监听器。但我希望我传达了限制背后的一般想法。