使用 process.send 发送消息时的第二个参数

Posted

技术标签:

【中文标题】使用 process.send 发送消息时的第二个参数【英文标题】:Second argument when emitting messages with process.send 【发布时间】:2016-05-10 05:02:27 【问题描述】:

main.js

let child = require('child_process').fork('./child.js');

child.on('message', function () 
    console.log('message', arguments)
);

child.js

process.send( ... );

似乎使用两个参数调用处理程序:

'0': ... , '1': 未定义

我指望message 监听器中的参数长度,所以参数的确切数量很重要。

第二个参数 (undefined) 是什么?是否在所有 Node.js 版本中都无条件存在?

【问题讨论】:

nodejs.org/api/child_process.html#child_process_event_message @robertklep - 这是一个答案 - 你应该这样发布。 【参考方案1】:

fine manual 声明:

事件:“消息”

message <Object> 已解析的 JSON 对象或原始值。

sendHandle <Handle> net.Socketnet.Server 对象,或未定义。

如果您在同一页面上搜索 sendHandle,您最终会得到here,具体而言:

可以传递给child.send() 的可选sendHandle 参数用于将TCP 服务器或套接字对象传递给子进程。子进程将接收对象作为第二个参数传递给在process.on('message') 事件上注册的回调函数。

但是,在您的情况下,您是从另一个方向发送消息,从子节点到服务器,在这种情况下发送句柄没有意义。因此,我的猜测是,在这种情况下,第二个参数将始终undefined(但仍会存在)。

【讨论】:

以上是关于使用 process.send 发送消息时的第二个参数的主要内容,如果未能解决你的问题,请参考以下文章

尝试运行我的应用程序的第二个目标时的 SIGABRT

通过 npm 脚本生成时从子进程向父进程发送消息

基于托管 SIP 应用程序 API 构建的第二个 Lync 应用程序未接收 SIP 消息

SendMessage()函数的 第二、三、四个参数是啥 怎么用

如何将上下文传递给提供者的第二个小部件树

在 C# 中使用管道在进程之间进行通信