这里是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
实例时才有可能。但是如何?