atmosphere explorer
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

show websocket close event

authored by

Bas van den Wollenberg and committed by
Tangled
827e3507 7f0903b2

+33
+20
src/utils/websocket.ts
··· 1 + const _websocketCloseReasons = { 2 + 1000: "Normal Closure", 3 + 1001: "Going Away", 4 + 1002: "Protocol Error", 5 + 1003: "Unsupported Data", 6 + 1005: "No Status Received", 7 + 1006: "Abnormal Closure", 8 + 1007: "Invalid frame payload data", 9 + 1008: "Policy Violation", 10 + 1009: "Message too big", 11 + 1010: "Missing Extension", 12 + 1011: "Internal Error", 13 + 1012: "Service Restart", 14 + 1013: "Try Again Later", 15 + 1014: "Bad Gateway", 16 + 1015: "TLS Handshake", 17 + } as const; 18 + 19 + export const websocketCloseReasons = _websocketCloseReasons as typeof _websocketCloseReasons & 20 + Record<string, string>;
+13
src/views/stream/index.tsx
··· 7 7 import { JSONValue } from "../../components/json"; 8 8 import { TextInput } from "../../components/text-input"; 9 9 import { addToClipboard } from "../../utils/copy"; 10 + import { websocketCloseReasons } from "../../utils/websocket"; 10 11 import { getStreamType, STREAM_CONFIGS, STREAM_TYPES, StreamType } from "./config"; 11 12 import { StreamStats, StreamStatsPanel } from "./stats"; 12 13 ··· 183 184 setStats((prev) => ({ ...prev, eventsPerSecond: 0 })); 184 185 }; 185 186 187 + const onWebsocketClose = (event: CloseEvent) => { 188 + const code = event.code.toString(); 189 + if (code === "1000" || code === "1005") return; 190 + 191 + setNotice(`Connection closed: ${websocketCloseReasons[code] ?? "Unknown reason"}`); 192 + disconnect(); 193 + }; 194 + 186 195 const connectStream = async (formData: FormData) => { 187 196 setNotice(""); 188 197 if (connected()) { ··· 251 260 if (!isFilteredEvent || streamType !== "jetstream" || searchParams.allEvents === "on") 252 261 addRecord(rec); 253 262 }); 263 + socket.addEventListener("close", onWebsocketClose); 254 264 socket.addEventListener("error", () => { 265 + socket.removeEventListener("close", onWebsocketClose); 255 266 setNotice("Connection error"); 256 267 disconnect(); 257 268 }); ··· 262 273 cursor: cursor, 263 274 autoReconnect: false, 264 275 }); 276 + firehose.ws.addEventListener("close", onWebsocketClose); 265 277 firehose.on("error", (err) => { 278 + firehose.ws.removeEventListener("close", onWebsocketClose); 266 279 console.error(err); 267 280 const message = err instanceof Error ? err.message : "Unknown error"; 268 281 setNotice(`Connection error: ${message}`);