Node.js Nodejs:始终连接到同一个套接字
下面是nodeJS代码:Node.js Nodejs:始终连接到同一个套接字,node.js,jsp,socket.io,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)
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中:
header.jsp在许多页面中导入。现在,如果打开page1.jsp,则打开page2.jsp。我收到了通知,但问题是我在page2.jsp中收到了消息,而不是在page1.jsp中,即我总是在最后打开的页面中收到消息。可能是因为丢失了旧的套接字连接
我想,如果有任何通知,它应该由所有网页收到。在FB中,您将看到,如果您有新的通知,它将在所有打开的FB页面中显示红色通知指示器
我认为只有在用户会话中使用相同的套接字实例时才有可能。但如何使用?我正在做的临时解决方案是为用户ID维护一个套接字实例数组。如果有任何事件,只需迭代所有实例并发送消息。类似于users[1]=[socket1,socket2]
var socket = io.connect('myserver:3000');
socket.on('serverNotification', function (data) {
console.log("got message");
});
socket.emit('connectNotfServer',{"userId":"123");