Tiempo real: SSE y WebSocket
connectSSE y connectSocket en @nexa/http envuelven las APIs nativas del navegador en señales reactivas — sin protocolo propio.
Server-Sent Events
import { connectSSE } from "@nexa/http";
const notifications = connectSSE({ url: "/events" });
// notifications.data.value -> el último mensajedata es el último mensaje recibido, parseado como JSON si se puede.
WebSocket
import { connectSocket } from "@nexa/http";
const chat = connectSocket({ url: "wss://miapp.com/chat" });
chat.send({ text: "hola" });
// chat.status.value -> "connecting" | "open" | "reconnecting" | "closed"status refleja el ciclo de vida real de la conexión; send() serializa objetos como JSON automáticamente.
Reconexión real, con backoff
const chat = connectSocket({
url: "wss://miapp.com/chat",
reconnect: { maxAttempts: 10, baseDelayMs: 500, maxDelayMs: 15000 }
});Si la conexión se cae, reconnect: true (o un objeto { maxAttempts, baseDelayMs, maxDelayMs } para ajustarlo) hace que se reconecte sola con backoff exponencial + jitter — status pasa por "reconnecting" mientras lo intenta. Verificado matando y levantando un servidor de WebSocket real mientras un navegador real mantenía la conexión abierta. Sin esa opción, sigue siendo el comportamiento de siempre: status pasa a "closed" y se queda ahí.