先看一个一个应用程序,通过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自然不会对子进程产生影响
添加回答
举报
0/150
提交
取消
