Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

822
Vistas
Enviar cookies con socket.io-client

Estoy tratando de conectarme a un websocket. Me gustaría agregar cookies del inicio de sesión real del sitio web, para que el servidor (que NO es mío), sepa quién soy (los eventos son específicos de la cuenta).

 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]"); }); }

La conexión en sí funciona bien, ya que estoy recibiendo los eventos públicos del sitio web (no por cuenta).

Traté de encontrar el problema usando el inspector de nodos.

Esta es la primera petición que se está haciendo. Parece que los encabezados de solicitud están vacíos y faltan las cookies.

Inspector de nodos: ingrese la descripción de la imagen aquí

Uso normal del sitio web en Chrome: http://i.imgur.com/96h0PEV.jpg

(Sí, estoy enviando menos cookies en el nodo, solo para ver si aparecen en las cookies de solicitud)

¿Estoy haciendo algo mal? ¿Cómo agregaría cookies de la manera correcta?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Tuve un problema similar, creo que sus opciones tienen que configurar la cookie para el método de transporte de "sondeo", así:

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

Conseguí que esto funcionara con el siguiente ejemplo de servidor-cliente todo en uno:

 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 Denunciar

0

Socket.io agregó recientemente una opción extraHeaders al cliente:

 Client(url, { extraHeaders: { Cookie: `CookieName=CookieValue;`, }, })
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda