1

ユーザーの session.id を 10 日間保存したいチャットを作成しています。ユーザーが 8 日後に戻ってきた場合、メッセージが再び表示されるようにします。これが機能するには、生成された session.id を何らかの方法で保存する必要があります。

どうすればこれを達成できますか?

ユーザー接続時に実行される私の現在のコードは次のとおりです。

// user_id はドメインごとに一意の ID であるため、各チャットには独自のルームがあります

socket.on('adduser', function(user_id){

    var sid = socket.id;
    console.log('Socket.id ====>', sid);

    socket.join('Room_' + user_id);
    socket.broadcast.to('Room_' + user_id).emit('updatechat', 'SERVER','Hello');
});
4

1 に答える 1

0

Cookie/セッション ID 情報の保存と取得には、高速セッション ストアを使用します。以下のサンプル コードに従って、socket.io を承認付きで使用して、ユーザー接続で sessionID を抽出します。

var parseCookie = require('connect').utils.parseCookie;
sio.set('authorization', function (data, accept) {
    if (data.headers.cookie) {
        data.cookie = parseCookie(data.headers.cookie);
        data.sessionID = data.cookie['express.sid'];
    } else {
       return accept('No cookie transmitted.', false);
    }
    accept(null, true);
});

Cookie には、Express セッションのセッション ID が含まれます。

データ オブジェクトに割り当てられたすべての属性は、socket.io 接続オブジェクトのハンドシェイク属性を介してアクセスできるようになりました。

sio.sockets.on('connection', function (socket) {
    console.log('A socket with sessionID ' + socket.handshake.sessionID 
        + ' connected!');
});

お役に立てれば。

于 2013-01-15T12:15:40.487 に答える