为什么Node不能在Windows中的worker中设置命名管道服务器?

Tra*_*ebb 7 node.js trailsjs

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

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

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

  1. 这到底是什么意思?
  2. 这有什么影响?

从文档和我所做的其他研究来看,这个限制的实际实际后果对我来说并不清楚.

Rob*_*ann 4

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

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

http.createServer().listen('\\.\pipe\nginx')
Run Code Online (Sandbox Code Playgroud)

.listen()方法签名的文档在这里,特别是这部分很有趣:

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

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

这是相关的提交,暗示了此限制。您可以通过打开 cluster 的 Markdown 文档来找到它,查看 gitblame 并进一步了解历史,直到到达引入此注释的提交。

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

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