Nodejs:始终连接到同一个套接字

时间:2014-04-22 04:19:14

标签: node.js jsp socket.io

这里是nodeJS代码:

exports.initialize = function(app,server) {
    var io = require('socket.io');
    var http = require("http");
    var url = require("url");
    io = io.listen(server);
    var userList={}
    io.sockets.on("connection", function(socket){
        socket.on('connectNotfServer', function(message){

                userList[message.userId]=socket;
                console.log("Get connected to user: "+message.userId);

        });
    });

    app.get('/notifyUser', function(req, res){
        var parsedUrl = url.parse(req.url, true);
        var params = parsedUrl.query;

            userList[params.to].emit('serverNotification',{notfication:params.message,id:params.id,time:params.time});
            res.end(JSON.stringify(params));

    });
};

现在在header.jsp

 var socket = io.connect('myserver:3000');
 socket.on('serverNotification', function (data) {
         console.log("got message");
 });    
 socket.emit('connectNotfServer',{"userId":"123");

header.jsp在很多页面中导入。现在如果打开page1.jsp然后打开page2.jsp。我收到了通知,但问题是我在page2.jsp中没有收到page1.jsp中的消息,即我总是在最后打开的页面中收到消息。(可能是丢失旧套接字连接的原因)。

我希望如果有任何通知,它应该被所有页面接收。如在FB中,您将看到如果您有新通知,它将在所有打开的FB页面中显示红色通知指示符。

我认为只有在整个用户会话中使用相同的Socket实例时才有可能。但是如何?

0 个答案:

没有答案