여기 게시/구독이 필요합니다. Redis는 사용자가 원하는대로 기능을 제공합니다. Redis 클라이언트를 만들고 각 앱 서버 노드에서 업데이트 채널을 구독하기 만하면됩니다. 그런 다음 POST가 성공하면 업데이트를 게시하십시오. 마지막으로, 레디 스 클라이언트가 업데이트 샤넬을 구독 및 메시지에 socketio 이벤트를 방출 있습니다
이 방출 메시지 수신의 JS 응용 프로그램에
var express = require('express')
, socketio = require('socket.io')
, redis = require('redis')
, rc = redis.createClient()
;
var app = express();
var server = http.createServer(app);
var io = socketio.listen(server);
server.listen(3000);
app.post('/targets', function(req, res){
rc.publish('update', res.body);
});
rc.on('connect', function(){
// subscribe to the update channel
rc.subscribe('update');
});
rc.on('message', function(channel, msg){
// util.log('Channel: ' + channel + ' msg: ' + msg);
var msg = JSON.parse(msg);
io.sockets.in('update').emit('message', {
channel: channel,
msg: msg
});
});
다음 (간결하게 잘립니다) :
socket.on('message', function(data){
debugger;
// do something with the updated data
});
물론이 새로운 Redis Server를 도입하면 또 다른 단일 실패 지점이 추가됩니다. 좀 더 강력한 구현은 AMQP 또는 ZeroMQ가있는 메시지 브로커 또는 pub/sub 기능을 제공하는 유사한 네트워킹 라이브러리와 같은 것을 사용할 수 있습니다.
redis의 경우입니다. http://socket.io/docs/using-multiple-nodes/ – generalhenry