Pergunta

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

Foi útil?

Solução

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

Please see: Socket.IO Authentication.

Outras dicas

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top