为了账号安全,请及时绑定邮箱和手机立即绑定

nodejs关于进程间发送句柄的一点疑问

nodejs关于进程间发送句柄的一点疑问

慕田峪7331174 2018-11-14 13:15:21
先看一个一个应用程序,通过net服务触发 http服务;简单来说就是 初始化两个服务 一个net服务 一个http服务,用net服务监听端口,客户端连接后,触发http服务的连接事件,并将socket传给http服务;里面有一行注释,如果关闭注释,服务就关闭了;但是再看另一个应用,这里涉及到了子进程模块,还有进程间的句柄传递;看程序;父进程文件:子进程文件:大家看父进程文件里也有一行注释,但是这里的注释去掉后,服务能正常工作,这是什么原因呢?父进程的net服务已经关闭了,已经不监听3000端口了,想不明不白在代码层面理解 父进程结束了,但是子进程没有结束,但是请求的流是怎么运行的呢,或者说这个代码是怎么运行的,思绪有点乱啊,node深入浅出,读起来还真是有点费劲啊
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

google了一下,在stackoverflow上找到一个类似的问题

关键应该在这一段上handleConversion
在send时有handle参数的情况下,会调用handleConversion[type]
可以看到在type:"net.Server"时,send的是server._handle
而接收时是这样的

got: function(message, handle, emit) {

      var self = this;


      var server = new net.Server();

      server.listen(handle, function() {

        emit(server);

      });

}

也就是说父进程send了server._handle
而子进程则使用这个handle重建了一个server
所以实际上子进程中的server已经跟父进程中的不是同一个了,父进程的server.close自然不会对子进程产生影响


查看完整回答
反对 回复 2018-12-08
  • 1 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号