如何把http请求得到的信息及时的用socket.io发送给其他人?
发布于 12 年前 作者 dolphinboy 8486 次浏览 最后一次编辑是 8 年前
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不知道有木有呢?

回到顶部