9

Socket.IO に Cookie 値を追加するには?

io.sockets.on('connection', function (client)
{ 
    console.log(client.id); 
    client.handshake.headers.cookie.socketID = client.id;   // not work
 // client.handshake.headers.cookie("socketID",client.id);  //crash

    console.log(client.handshake.headers.cookie);
// The current output is:
//connect.sid=tI21xumy3u2n4QXO1GljmPAf.pzFQ1Xu%2B6bz36secu4VSCdSNU8PT1L44gQZ4kFUFQqQ
//this is express session id, and I also want to add client.id of Socket.IO. 

//...........
}

http://www.danielbaulig.de/socket-ioexpress/を読み ましたが、node.js でのセッション管理は必要ありませんが、connect.sid のように Cookie に socket.io クライアント ID 値を追加するだけで済みます。

4

2 に答える 2

12

Authorization with Socket.io をご覧ください。これは、最初の接続要求を処理する場所であり、応答ヘッダーを設定できる場所です。

省略形が機能するかどうかはわかりませcookie(name,value)んが、手動で設定してみてください。

    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000)); // set day value to expiry
    var expires = "; expires="+date.toGMTString();

    handshake.headers.cookie = name+"="+value+expires+"; path=/";
于 2012-05-27T14:53:35.993 に答える
-4

ハックに見えるかもしれませんが、ハンドシェイク get リクエストへの応答で Cookie を設定するあらゆる方法を試しましたが、成功しませんでした。しかし、socket.io プロトタイプ コード自体を微調整することで、なんとか機能させることができました。

socket.io バージョン 1.3.4 では、

\node_modules\socket.io\node_modules\engine.io\lib\server.js 内

から 249 行目を変更します。

headers['Set-Cookie'] = self.cookie + '=' + id;

headers['Set-Cookie'] = req.headers.cookie;

リクエスト内のすべての Cookie がレスポンスで返されます

于 2015-06-21T19:23:27.990 に答える