私はwebsockets/wsを単独のマシンで使用しています。そのうまく動作します。マルチコアと複数のインスタンスで水平にスケーリングしたい。 mutli-coreの場合、私はpm2で試してみました。複数のサーバーインスタンスでwebsockets/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')
});
とクライアント用WebSocketインスタンスが
// 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
と、サーバーとクライアントを実行され、クライアントは1秒ごとに同じ接続(サーバーで)に遭遇します。 マルチコアwsはPM2とうまく動作します。
第2質問:複数のインスタンスでどのようにスケールするのですか? 水平スケーリングのためにSocketClusterを見ただけですが、すでにwsでコードを開発しているのでwebsockets/wsとともに使用できます。水平スケーリングのための他の解決策は何でしょうか。
ドミトリーおかげで、私はこのlib – Gagan