国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:119日期: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)行的,思緒有點(diǎn)亂啊,node深入淺出,讀起來還真是有點(diǎn)費(fèi)勁啊

問題解答

回答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所以實(shí)際上子進(jìn)程中的server已經(jīng)跟父進(jìn)程中的不是同一個了,父進(jìn)程的server.close自然不會對子進(jìn)程產(chǎn)生影響

stackoverflow上的問題可以看這里

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 国产精品国产三级国产普通 | 毛片久久久 | 自拍视频啪 | 三级毛片网站 | 成人女人a毛片在线看 | 免费一级毛片在线播放不收费 | 国产精品爱久久久久久久 | 免费国产成人午夜在线观看 | 欧美性狂猛bbbbbbxxxxxx | 毛片成人 | 亚洲最黄网站 | 日韩久久一区二区三区 | 在线免费一级片 | 久草免费资源在线 | 国产欧美精品午夜在线播放 | 国内三级视频 | 大量真实偷拍情侣视频野战 | 亚洲国产精品成人精品软件 | 黄色国产免费观看 | 一区二区不卡久久精品 | 亚洲99在线的 | 国产精品自在线 | 九九精品99久久久香蕉 | 九九精品视频一区在线 | 免费一区二区三区在线视频 | 久久在线免费观看 | 国产观看在线 | 国产免费网| 特级生活片 | 免费观看欧美一区二区三区 | 黄色三级理沦片 | 呦视频在线一区二区三区 | 国产黄色三级 | 国内精品免费一区二区观看 | 在线亚洲日产一区二区 | 欧美精品成人一区二区在线观看 | 免费播放欧美毛片 | 欧美一级特黄一片免费 | 亚洲精品久久久久久久福利 | 国产香蕉久久 | 性a爱片免费视频性 |