Node.js檢測端口(port)是否被占用的簡單示例
前言
在網(wǎng)絡技術中,端口(Port)大致有兩種意思:一是物理意義上的端口,比如,ADSL Modem、集線器、交換機、路由器用于連接其他網(wǎng)絡設備的接口,如RJ-45端口、SC端口等等。二是邏輯意義上的端口,一般是指TCP/IP協(xié)議中的 端口,端口號的范圍從0到65535,比如用于瀏覽網(wǎng)頁服務。這篇文章的目的是為了解決ssr工具起多個服務的時候端口被占用的情況,下面跟大家分享研究的代碼片段,有需要的可以參考借鑒。
示例代碼
// 檢測port是否被占用 function probe(port, callback) { var server = net.createServer().listen(port) var calledOnce = false var timeoutRef = setTimeout(function () { calledOnce = true callback(false,port) }, 2000) timeoutRef.unref() var connected = false server.on('listening', function() { clearTimeout(timeoutRef) if (server) server.close() if (!calledOnce) { calledOnce = true callback(true,port) } }) server.on('error', function(err) { clearTimeout(timeoutRef) var result = true if (err.code === 'EADDRINUSE') result = false if (!calledOnce) { calledOnce = true callback(result,port) } }) } function server(_port){ var pt = _port || __port; probe(pt,function(bl,_pt){ // 端口被占用 bl 返回false // _pt:傳入的端口號 if(bl === true){ // ssr(_pt) server = http.createServer(connListener); server = server.listen(parseInt(_pt, 10)); console.log("\n Static file server running at" + "\n\n=> http://localhost:" + _pt + '\n'); }else{ server(_pt+1) } }) }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望能對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
深入剖析Express cookie-parser中間件實現(xiàn)示例
本篇文章主要介紹了深入剖析Express cookie-parser中間件實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02詳解使用Visual Studio Code對Node.js進行斷點調(diào)試
這篇文章主要介紹了詳解使用Visual Studio Code對Node.js進行斷點調(diào)試,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09Node.js刷新session過期時間的實現(xiàn)方法推薦
下面小編就為大家?guī)硪黄狽ode.js刷新session過期時間的實現(xiàn)方法推薦。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05