1

サーバー上の自分の情報にのみ影響を与える一意の ID を WebSocket に接続する新しいユーザーごとに与える方法について、私は混乱しています。Websocket の情報はブロードキャストされるため、全員がサーバーから情報を受け取ります。これにはsocket ioを使用しています。

4

1 に答える 1

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を見て、セッションと socket.io が redis ストアを使用して調和している優れたソース コードを確認してください。

お役に立てれば!

于 2012-11-16T20:44:59.547 に答える