2017-10-20 10 views
0

단일 컴퓨터에서 websockets/ws을 사용하고 있습니다. 잘 작동합니다. 멀티 코어 및 여러 인스턴스에서 수평으로 크기를 조정하려고합니다. mutli-core의 경우 pm2으로 시도했지만 잘 작동하는 것 같습니다.다중 서버 인스턴스가있는 WebSocket/ws 조정

첫 번째 질문 :이 방법이 가장 좋은 방법입니까 아니면 적절한 방법입니까? 지금 로그 pm2 logs ws-client 각 표시되면 여기 PM2 내 테스트 코드

// ws-server.js 
const WebSocket = require('ws'); 

const wss = new WebSocket.Server({ port: 3131 }); 

var pid = process.pid + '' 
console.log('process pid: '+ pid) 

wss.on('connection', function connection(ws) { 
    ws.on('message', function incoming(message) { 
    if (message === 'get-pid') { 
     ws.send('pid-' + pid) 
    } else { 
     var matched = pid === message ? 'old friends' : 'strangers' 
     ws.send([pid, message, 'we are ' + matched].join(', ')) 
    } 
    }); 
    ws.send('first time') 
}); 

및 클라이언트 웹 소켓 인스턴스는

// ws-cient.js 
const WebSocket = require('ws'); 
const ws = new WebSocket('ws://localhost:3131/'); 

var pid 
ws.on('open', function open() { 
    ws.send('get-pid'); 
    setInterval(function() { 
    ws.send(pid) 
    }, 1000) 
}); 

ws.on('message', function incoming(data) { 
    if (/^pid/.test(data)) { 
    pid = data.match(/\d+/)[0] 
    console.log('got pid: ' + pid) 
    } else { 
    console.log(data) 
    } 
}); 

그냥 PM2

$ pm2 start ws-server.js -i 50 
    $ pm2 start ws-client.js -i 50 

으로 서버와 클라이언트를 실행되며, 클라이언트는 매초마다 동일한 연결 (서버에서)에 도달합니다. 멀티 코어 w는 PM2와 잘 작동합니다.

두 번째 질문 : 여러 인스턴스로 어떻게 확장합니까? 수평 확장을 위해 SocketCluster을 보았지만 ws 코드를 이미 개발했기 때문에 websockets/ws와 함께 사용할 수 있습니까? 수평 확장을위한 다른 솔루션이 될 수 있습니다.

https://github.com/ClusterWS/ClusterWS

이 라이브러리의 주요 목적은 프로세스와 시스템에 걸쳐 웹 소켓을 확장하는 것입니다

답변

1

불행하게도, 다른 프로세스를 통해 웹 소켓 확장하기 어려울 것입니다, 난 당신이 라이브러리를 사용하는 것이 좋습니다 것입니다 . 또한 좋은 점은 라이브러리가 작고 빠릅니다.

+0

Dmitrii 감사합니다.이 라이브러리를 살펴 보겠습니다. – Gagan