Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

823
Visualizações
Send cookies with socket.io-client

I am trying to connect to a websocket. I would like to add cookies from the actual website login, so the server (which is NOT mine), knows who I am (events are account specific).

var opts = {
   extraHeaders: {
        'Cookie': "_ga=GA1.2.17432343994.1475611967; _gat=1; __cfduid=dc232334gwdsd23434542342342342475611928"
    },
}

function socket() {
            var socket = io(websiteURL, opts);
            var patch = require('socketio-wildcard')(io.Manager); patch(socket);

            socket.on('connect', function () {
                console.log(" > [Connected]");

            });
            socket.on('*', function (data) {                
                console.log(" >>> " + data);
            });

            socket.on('disconnect', function () {
                console.log(" > [Disconnected]");
            });

}

The connection itself works fine, since I am receiving the public events from the website (not per-account ones).

I tried to find the problem using node-inspector.

This is the first request that is being done. It seems like the request headers are empty and the cookies are missing from there.

Node-Inspector: enter image description here

Normal usage of the website in chrome: http://i.imgur.com/96h0PEV.jpg

(Yes, I am sending less cookies in node, just to see if they pop up in the request cookies)

Am I doing something wrong? How would I add cookies the right way?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

I had a similar problem, I think your options have to set the cookie for the "polling" transport method, like this:

var opts = {
    transportOptions: {
        polling: {
            extraHeaders: {
                'Cookie': '_ga=GA1.2.17432343994.1475611967; _gat=1; __cfduid=dc232334gwdsd23434542342342342475611928'
            }
        }
    }
}

I got this to work with the following all-in-one server-client example:

const express = require('express');
const http = require('http');

const app = express();
const httpServer = new http.Server(app);
const socketServer = require('socket.io')(httpServer);

const LISTEN_PORT = 4444;

socketServer.on('connection', socket => {
    const cookieString = socket.handshake.headers.cookie;
    console.log('server connection ' + (cookieString || ''));

    setInterval(() => socket.emit('ping', Date.now()), 1000);
});

let socketClient = undefined;
httpServer.listen(LISTEN_PORT, 'localhost', () => {
    console.log('web server started')

    const options = {
        transportOptions: {
            polling: {
                extraHeaders: {
                    'Cookie': 'hello=world'
                }
            }
        }
    }
    socketClient = require('socket.io-client').connect('http://localhost:'+LISTEN_PORT, options);
    socketClient.on('ping', (data) => console.log('ping ' + data));
});
over 4 years ago · Santiago Trujillo Relatório

0

Socket.io recently added an extraHeaders option to the client:

Client(url, {
      extraHeaders: {
        Cookie: `CookieName=CookieValue;`,
      },
    })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda