nodejs+socketio+redis实现前端消息实时推送

时间:2023-03-09 04:07:08
nodejs+socketio+redis实现前端消息实时推送

1. 后端部分 发送redis消息

可以参考此篇实现(直接使用Jedis即可)

http://www.cnblogs.com/binyue/p/4763352.html

2.后端部分: 接收redis消息

var redis;
if(process.argv.length <= 2){
redis = require('redis').createClient();
}else{
redis = require('redis').createClient(6379,process.argv[2]);
}
var io = require('socket.io').listen(5678);
var clients = {}
redis.subscribe('console');
redis.on('message', function(channel, data){
if (channel=="console"){
args = JSON.parse(data);
for(var s in clients){
clients[s].emit('event_' + args.id, args.message);
}
}
});
io.on('connection', function(socket){
var address = socket.request.connection.remoteAddress + ":" + socket.request.connection.remotePort
console.log(new Date() + ' client connected ['+ socket.id + "] " + address);
clients[socket.id] = socket;
socket.on('disconnect', function(){
console.log("discopnnect " + this.id + "-----" + this.request.connection.remoteAddress + ":" + this.request.connection.remotePort);
delete clients[socket.id];
});
socket.on('event', function(message){ });
});

package.json

{
"name" : "real-time",
"description" : "providing real-time message push for ",
"version" : "0.0.1",
"dependencies" : {
"socket.io" : "1.2.1",
"redis": "0.7.3",
"socket.io-client": "1.2.1"
}
}

前端部分 接收消息并显示

使用了 socket.io-1.0.6

var socket = io.connect(beeper_url);
socket.on('event_' + event_id,function(data){
callback(data);
})