es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las conexiones de Websockets a localhost fallan en los navegadores basados en chromium.

Estoy intentando construir un sitio web de chat que utilice vue.js como frontend y django como backend. Funciona bien en Firefox, pero en MS Edge y Google Chrome, Websocket falla. Obtengo este mensaje en la consola del navegador.

WebSocket connection to 'ws://127.0.0.1:8000/inbox/' failed

Utilizo django-channels, por lo que en la consola de python aparece lo siguiente:

WebSocket CONNECT /inbox/ [127.0.0.1:4965]
WebSocket DISCONNECT /inbox/ [127.0.0.1:4965]

Cuando imprimo el código de error, obtengo 1006.

El código de cierre 1006 es un código especial que significa que la conexión se cerró de manera anormal (localmente) por la implementación del navegador.

Mi código de WebSocket

new WebSocket(url, authToken) // Utilizo sec-websocket-protocol para transferir el token de autenticación

¿Qué estoy haciendo mal o es un problema con el navegador?

— Actualizado

new WebSocket("ws://127.0.0.1:8000/inbox/", "authtoken");

Así que estoy enviando el token de autenticación en el segundo protocolo de WebSocket y autenticando al usuario en el backend utilizando middleware. Cuando elimino ese protocolo y permito usuarios no autenticados en el backend,

new WebSocket("ws://127.0.0.1:8000/inbox/");

la conexión del WebSocket funciona correctamente. El problema es al enviar el segundo protocolo de WebSocket.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede residir en la implementación del sec-websocket-protocol en MS Edge y Google Chrome. Una solución podría ser probar un método de autenticación diferente que sea compatible con todos los navegadores.
    Otra posibilidad es revisar el código del backend y asegurarse de que esté manejando correctamente el token de autenticación.
    También vale la pena verificar si algún firewall o función de seguridad está bloqueando la conexión WebSocket.
    En general, puede ser necesaria una mayor investigación y pruebas para determinar la causa exacta del problema.

Comments are closed.