如何把http请求得到的信息及时的用socket.io发送给其他人?
app.get('/info',function(req,res){
var info = req.body.info;
})
io.sockets.on('connection', function (socket){
socket.broadcast.emit('public message', info);
}
需求:A和B是两个NodejsServer,A请求B的/info并提交一个值info,B怎么把这个info的内容通过socket发送给其他所有人?并且A每请求一次socket就广播一次? 我想到的有两种解决方案: 一、把infor先放到一个全局变量里,然后socket去读取,但是这样的话socket得不断监听info值的变化,这样有一些性能浪费,并且可能会不及时,代码如下:
var info = null;
app.get('/info',function(req,res){
info = req.body.info;
})
io.sockets.on('connection', function (socket){
setInterval("a();",delaytime);
function a(){
socket.broadcast.emit('public message', info);
}
}
二、A用socket去连接B这样的话就可以把A当作socket的一个客户端了,代码:
io.sockets.on('connection', function (socket){
socket.on('ServerB',function(msg){
socket.broadcast.emit('public message', msg);
});
}
第二种方案不知道有哪些第三方的Server-to-Server的模块可用。 大家有什么好的解决方案,不妨说来听听啊?
1 回复
const redis = require('redis');
const redis_obj = redis.createClient(),
msg_sender = redis.createClient();
redis_obj.on("message", function(t_id, message)
{
console.log('send one message to ' + t_id );
socket.emit('message', message);
});
redis有这样的监听数据set的事件,mongodb不知道有木有呢?