用户连接时将websocket与http请求匹配

时间:2016-08-15 06:18:26

标签: javascript node.js websocket socket.io

我遇到的问题是http请求独立发生或在不同时间作为Web套接字连接发生。我的想法是,当用户连接时,我可以在var allConnectionsMatches = [];中的同一对中存储会话ID和Web套接字,并在稍后的帖子请求中使用此信息来找出哪个套接字正在调用请求,这样我就可以发出到那个特定的插座。下面的代码显示了我的尝试。我写的内容在某种程度上起作用但它有一些问题,例如当你刷新它有时不再发出消息时,或者当你退出浏览器并再次连接时,socket io没有发出消息。有什么想法吗?

var allConnectionsMatches = [];

var sessionID;

app.get('/', function(req, res, next) {

  sessionID = req.session.id;

  res.render('index.ejs')

});

function findDuplicates(data, sessionID, socket) {

    var isPositive = data.lastIndexOf(sessionID);

    if (isPositive === true) {

      var socketLocation = allConnectionsMatches.indexOf(sessionID);

      socketLocation + 1;

      allConnectionsMatches.splice(socketLocation, 1, socket)

    } else if(isPositive === -1) {

      data.push(sessionID, socket);
    } else {

    }

}


io.sockets.on('connection', function (socket) {
  findDuplicates(allConnectionsMatches, sessionID, socket)
});

0 个答案:

没有答案