如何在websocket中唯一标识用户?

时间:2012-11-16 05:18:04

标签: websocket socket.io

我很困惑如何给每个连接到websocket的新人一个唯一的标识,这个标识只会影响他自己在服务器上的信息。 websocket上的信息是广播的,所以每个人都从服务器接收信息。我正在使用socket io。

1 个答案:

答案 0 :(得分:1)

没有足够的信息来提供适合您需求的答案,但是这是使用express.js内存存储与套接字共享会话数据的常用方法。

var sio = require('socket.io'),
parseCookies = require('connect').utils.parseSignedCookies

// authorization for sockets
io.set('authorization', function (hsData, accept) {
    //get the handshake data for the socket
  if(hsData.headers.cookie) {
    //parse the cookies from the handshake data
    var cookies = parseCookies(cookie.parse(hsData.headers.cookie), "session secret"),
    sid = cookies["session path"];
    //load your session store and find the user
    sessionStore.load(sid, function(err, session) {
      hsData.user = session.user;
      return accept(null, true);
    });
  } else {
    return accept('No cookie transmitted.', false);
  }
});

io.sockets.on('connection', function(socket){
    //now the socket will have user data
  var user = socket.handshake.user,
 });

看一下Baloons.IO,看看一些很棒的源代码,其中session和socket.io使用redis商店和谐共存。

希望这有帮助!