av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點疑問

瀏覽:147日期:2023-09-12 08:09:26

問題描述

先看一個一個應(yīng)用程序,通過net服務(wù)觸發(fā) http服務(wù);

const http = require(’http’);const net = require(’net’);let netServer = net.createServer();let httpServer = http.createServer((req, res)=>{ res.end(’ok’);})netServer.listen(3000,function(){ console.log('222222'); //netServer.close();})netServer.on(’connection’,(socket)=>{ httpServer.emit(’connection’,socket);})

簡單來說就是 初始化兩個服務(wù) 一個net服務(wù) 一個http服務(wù),用net服務(wù)監(jiān)聽端口,客戶端連接后,觸發(fā)http服務(wù)的連接事件,并將socket傳給http服務(wù);里面有一行注釋,如果關(guān)閉注釋,服務(wù)就關(guān)閉了;但是再看另一個應(yīng)用,這里涉及到了子進(jìn)程模塊,還有進(jìn)程間的句柄傳遞;看程序;

父進(jìn)程文件:

var cp = require(’child_process’);var net = require(’net’);var child1 = cp.fork(’./c.js’);var child2 = cp.fork(’./c.js’);var netServer = net.createServer();netServer.listen(3000,function(){ child1.send(’server’, netServer); child2.send(’server’, netServer); console.log('222222'); netServer.close();})

子進(jìn)程文件:

const http = require(’http’);let httpServer = http.createServer((req, res)=>{ // res.writeHead(200,{’Content-Type’:’text/plain’ + ’n’}); res.end(’ok’);})process.on(’message’, function(m, tcp){ console.log(m); tcp.on(’connection’, function(socket){httpServer.emit(’connection’,socket); })})

大家看父進(jìn)程文件里也有一行注釋,但是這里的注釋去掉后,服務(wù)能正常工作,這是什么原因呢?父進(jìn)程的net服務(wù)已經(jīng)關(guān)閉了,已經(jīng)不監(jiān)聽3000端口了,想不明不白在代碼層面理解 父進(jìn)程結(jié)束了,但是子進(jìn)程沒有結(jié)束,但是請求的流是怎么運(yùn)行的呢,或者說這個代碼是怎么運(yùn)行的,思緒有點亂啊,node深入淺出,讀起來還真是有點費勁啊

問題解答

回答1:

google了一下,在stackoverflow上找到一個類似的問題

關(guān)鍵應(yīng)該在這一段上handleConversion在send時有handle參數(shù)的情況下,會調(diào)用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); });}

也就是說父進(jìn)程send了server._handle而子進(jìn)程則使用這個handle重建了一個server所以實際上子進(jìn)程中的server已經(jīng)跟父進(jìn)程中的不是同一個了,父進(jìn)程的server.close自然不會對子進(jìn)程產(chǎn)生影響

stackoverflow上的問題可以看這里

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 天堂中文av| 日韩综合网 | 国产良家自拍 | 美女视频一区二区三区 | 国产精品色 | 国产精品观看 | 国产激情在线 | 欧美日韩一区二区视频在线观看 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 久久久久久久久久久高潮一区二区 | 久久久久久国产精品 | 亚洲人a| 免费观看黄网站 | 久久成人激情 | 亚洲欧美日韩激情 | 亚洲欧美在线观看 | 欧美日韩一区二区三区四区 | www久久久 | 一级毛片在线播放 | 久久久久久久亚洲精品 | 亚洲成人二区 | 精品91久久 | 精品视频一区二区 | 国产一区二区精品 | 五月婷婷婷| 91精品一区二区三区久久久久久 | 免费一区二区 | 成人网av | 天天综合久久 | 欧美一区不卡 | 一区二区在线 | 久久久av中文字幕 | 欧美国产激情二区三区 | 国产成人免费视频网站视频社区 | 亚洲女人天堂网 | 欧美精品一区二区三区在线 | 成人视屏在线观看 | 欧美视频免费 | 综合久久99 | www.中文字幕av | 欧美日韩综合视频 |