Realtime: v0.10.x ¿La documentación de JWT no parece clara?

Creado en 28 ene. 2021  ·  2Comentarios  ·  Fuente: supabase/realtime

Pregunta

Usando la versión actual de @supabase/realtime-js no puedo conectarme a la última versión de @supabase/realtime . Siguiendo la documentación de los cambios importantes en v0.10, ¿qué se supone que deben incluir las solicitudes de apertura de clientes?

¿Un parámetro de consulta token ? ¿Un header ?

Reproducir

docker-compose.yml

version: "3"
services:
  realtime:
    image: supabase/realtime:latest
    ports:
      - "4000:4000"
    environment:
      DB_HOST: db
      DB_NAME: postgres
      DB_USER: postgres
      DB_PASSWORD: postgres
      DB_PORT: 5432
      PORT: 4000
      HOSTNAME: localhost
      JWT_SECRET: SOMETHING_SUPER_SECRET
      SECURE_CHANNELS: "true"
    depends_on:
      - db
  db:
    image: supabase/postgres
    ports:
      - "5432:5432"
    command:
      - postgres
      - -c
      - wal_level=logical
    environment:
      POSTGRES_PASSWORD: postgres

index.js

const { RealtimeClient } = require("@supabase/realtime-js")

const client = new RealtimeClient("ws://localhost:4000/socket")
client.onOpen(() => console.log("Socket opened."))
client.onClose(() => console.log("Socket closed."))
client.onError((e) => console.log("Socket error", e.message))
client.connect()

Salida terminal

realtime_1  | 2021-01-28 16:01:20.162 [info] Running RealtimeWeb.Endpoint with cowboy 2.6.3 at :::4000 (http)
realtime_1  | 2021-01-28 16:01:20.162 [info] Access RealtimeWeb.Endpoint at http://localhost:4000
realtime_1  | 2021-01-28 16:03:25.018 [info] REFUSED CONNECTION TO RealtimeWeb.UserSocket in 114µs
realtime_1  |   Transport: :websocket
realtime_1  |   Serializer: Phoenix.Socket.V1.JSONSerializer
realtime_1  |   Connect Info: %{}
realtime_1  |   Parameters: %{"vsn" => "1.0.0"}
realtime_1  | 2021-01-28 16:03:26.033 [info] REFUSED CONNECTION TO RealtimeWeb.UserSocket in 100µs

Salida de la aplicación

realtime-test-js % node .
Socket error undefined
Socket closed.
Socket error undefined
Socket closed.

Comportamiento esperado

Una conexión al enchufe en tiempo real.

Información del sistema

  • SO: macOS - ventana acoplable
  • Versión de realtime-js: 1.0.6
bug

Comentario más útil

@ w3b6x9 increíble, eso es exactamente lo que estaba buscando, ¡gracias! Intentando escribir la biblioteca @supabase/realtime-csharp y estaba luchando por entender cómo pasar la token .

Todos 2 comentarios

@acupofjose estamos en el proceso de habilitar la autenticación de JWT en tiempo real, así que disculpas si la documentación no es clara.

Parece que SECURE_CHANNELS ya está configurado en "true" en su docker-compose.yml , lo que significa que tendrá que configurar su JWT_SECRET en el secreto utilizado para firmar su JWT . Luego, puede pasar su JWT de esta manera:

const client = new RealtimeClient("ws://localhost:4000/socket", { params: { token: "your_jwt" }})

Si no desea habilitar la autenticación JWT, puede configurar SECURE_CHANNELS en "false" y todo debería seguir funcionando como se esperaba. Cuando SECURE_CHANNELS se establece en "false" , no es necesario establecer JWT_SECRET .

Continuaré y actualizaré la documentación de @supabase/realtime-js para reflejar lo que he escrito aquí.

Avíseme si tiene alguna otra pregunta.

¡Espero que haya ayudado!

@ w3b6x9 increíble, eso es exactamente lo que estaba buscando, ¡gracias! Intentando escribir la biblioteca @supabase/realtime-csharp y estaba luchando por entender cómo pasar la token .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

kiwicopple picture kiwicopple  ·  14Comentarios

retendo picture retendo  ·  12Comentarios

kiwicopple picture kiwicopple  ·  16Comentarios

awalias picture awalias  ·  5Comentarios

awalias picture awalias  ·  9Comentarios