socket.io與cluster
創(chuàng)新互聯(lián),專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站、展示型成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷推廣問題。在線上系統(tǒng)中,需要使用node的多進(jìn)程模型,我們可以自己實(shí)現(xiàn)簡(jiǎn)易的基于cluster模式的socket分發(fā)模型,也可以使用比較穩(wěn)定的pm2這樣進(jìn)程管理工具。在常規(guī)的http服務(wù)中,這套模式一切正常,可是一旦server中集成了socket.io服務(wù)就會(huì)導(dǎo)致ws通道建立失敗,即使通過(guò)backup的polling方式仍會(huì)出現(xiàn)時(shí)斷時(shí)連的現(xiàn)象,因此我們需要解決這種問題,讓socket.io充分利用多核。
在這里之所以提到socket.io而未說(shuō)websocket服務(wù),是因?yàn)閟ocket.io在封裝websocket基礎(chǔ)上又保證了可用性。在客戶端未提供websocket功能的基礎(chǔ)上使用xhr polling、jsonp或forever iframe的方式進(jìn)行兼容,同時(shí)在建立ws連接前往往通過(guò)幾次http輪訓(xùn)確保ws服務(wù)可用,因此socket.io并不等于websocket。再往底層深入研究,socket.io其實(shí)并沒有做真正的websocket兼容,而是提供了上層的接口以及namespace服務(wù),真正的邏輯則是在“engine.io”模塊。該模塊實(shí)現(xiàn)握手的http代理、連接升級(jí)、心跳、傳輸方式等,因此研究engine.io模塊才能清楚的了解socket.io實(shí)現(xiàn)機(jī)制。
場(chǎng)景重現(xiàn)
服務(wù)端采用express+socket.io的組合方案,搭配pm2的cluster模式,實(shí)現(xiàn)一個(gè)簡(jiǎn)易的b/s通信demo:
app.js
var path = require('path'); var app = require('express')(), server = require('http').createServer(app), io = require('socket.io')(server); io .on('connection', function(socket) { socket.on('disconnect', function() { console.log('/: disconnect-------->') }); socket.on('b:message', function() { socket.emit('s:message', '/: '+port); console.log('/: '+port) }); }); io.of('/ws') .on('connection', function(socket) { socket.on('disconnect', function() { console.log('/ws: disconnect-------->') }); socket.on('b:message', function() { socket.emit('/ws: message', port); }); }); app.get('/page',function(req,res){ res.sendFile(path.join(process.cwd(),'./index.html')); }); server.listen(8080);
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。