Saltar al contenido principal

Credenciales necesarias para Utilizar el Websocket

Credenciales necesarias para Utilizar el Websocket


  • Requerimientos Previos:
    • Previamente se debe haber generado una sesión mediante los endpoints de Auth.
      • POST | /auth/login
      • POST | /auth/refresh

Conexión al Websocket

  • El websocket funciona internamente mediante Socket.IO + NodeJS Http Server.
  • Se debe conectar directamente al dominio, es decir, si la api de express está saliendo por "api.glix.com" el websocket se debe conectar a ese dominio directo.
  • La conexión al mismo se puede realizar de 2 formas:
    • Conexión al Websocket directa (Sin Polling). [Recomendada]
    • Conexión al Websocket por Polling.
¿Qué es Polling y Conexión Directa?

El Polling implica que el cliente consulta al servidor repetidamente a intervalos, mientras que los WebSockets establecen una conexión bidireccional, persistente y en tiempo real. El polling es más sencillo, pero menos eficiente.

  • El Websocket requiere los tokens previamente generados por la sesión. El token de refresco lo va a obtener automáticmanete el servidor por las cookies, pero el token de acceso es necesario que se envíe por un header de autenticación.
nota

El Websocket no va a refrescar la sesión en ningún momento, solo va a validar que los tokens enviados enviados sean válidos y correspondan a una sesión activa.

  • Una vez que el usuario se conecte va a ser asignado a una sala personal única identificada por su userId.

Ejemplo de Conexión

info

1. wss es el equivalente a https.
2. El websocket tiene desactivada la función serveClient, la cual permite enviar un cliente de Socket.io por la misma url.

javascript
<script src="https://cdn.socket.io/4.8.3/socket.io.min.js"></script>
<script>
const socket = io("wss://api.glix.com", {
transports: ["websocket", "polling"], // Se recomienda usar solamente websocket
timeout: 20000,
reconnection: true,
withCredentials: true,
auth: {
accessToken: "jsonwebtoken",
},
});
</script>