문제

I want to set some user information in a cookie and be able to access it on connection, is this possible?

도움이 되었습니까?

해결책

client.request.headers.cookie leads to race conditions as the cookie always points to the last logged in user.

Please see: Socket.IO Authentication.

다른 팁

Using Socket.IO 0.8.7, you can access request headers via:

socket.handshake.headers

You can find more detail on this at https://github.com/LearnBoost/socket.io/wiki/Authorizing

I got it, this works:

client.request.headers.cookie

After looking to the engine.io source code you can set cookies using:

var io = require('socket.io')(3000);

io.use((socket, next) => {
    socket.conn.transport.once('headers', (headers) => {

        headers['set-cookie'] ="sess=test;"; });

    next();
});

this code could conflict with the engine.io code that set the sid cookie. as both HTTP/1.1 and HTTP/2 headers are case-insensitive and engine.io use 'Set-Cookie' in the headers object adding a lowercase object name 'set-cookie' would avoid this problem.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top