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

198
Vistas
Adición de información sobre el cliente en el protocolo de enlace Websocket inicial

Actualmente estoy creando una aplicación de chat distribuida. Todo funciona bien, lo que significa que es posible enviar mensajes entre los clientes y el servidor y transmitirlos adecuadamente.

Sin embargo, por el momento solo se envía el mensaje real al servidor. También me gustaría agregar información sobre el usuario que envía el mensaje.

Podría agregar esta información cada vez que envíe un mensaje nuevo, pero preferiría poder agregar esta información durante el protocolo de enlace inicial y luego guardar esta información en el backend.

He pensado en enviar cierta información en la URL, pero como solo instalo el websocket una vez, este no parece ser el camino a seguir. Del mismo modo, pensé en agregar la información como el cuerpo de la solicitud, pero leí que generalmente no se recomienda tener un cuerpo en una solicitud GET.

Entonces mi pregunta es, ¿estoy tratando de hacer algo que no debería hacer? ¿Debo simplemente enviar información sobre el cliente en cada nuevo mensaje que se envía al servidor?

Actualmente, mi cliente se ve así:

 const socket = new WebSocket("ws://localhost:8080/ws"); const connect = (cb) => { console.log("Attempting Connection...") socket.onopen = () => { console.log("Successfully Connected"); } socket.onmessage = (msg) => { console.log(msg) cb(msg); } socket.onclose = (event) => { console.log("Socket Closed Connection: ", event); } socket.onerror = (error) => { console.log("Socket Error: ", error); } }; const sendMsg = (msg) => { console.log("Sending msg: ", msg); socket.send(msg); }

Y la conexión inicial en el backend es manejada por lo siguiente:

 func serveWs(pool *websocket.Pool, w http.ResponseWriter, r *http.Request) { fmt.Println("WebSocket Endpoint Hit") conn, err := websocket.Upgrade(w, r) if err != nil { fmt.Fprintf(w, "%+V\n", err) } client := &websocket.Client{ Name: "?????", // Obviously, I would like the actual name to be here. Conn: conn, Pool: pool, } pool.Register <- client client.Read() }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo normal que se debe hacer aquí, como señaló Selbie , es esperar del cliente un primer mensaje especial a través de WebSocket. Si ese mensaje no se recibe o no cumple con los requisitos, el servidor finaliza la conexión WebSocket.

Usar socket.onopen es muy común para esta tarea.

Más información sobre por qué no puede colocar encabezados: encabezados HTTP en la API del cliente de Websockets

about 4 years ago · Juan Pablo Isaza 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