BIG mistake in socket causing no messages to be delivered

This commit is contained in:
Niklas Jensen
2026-01-03 02:16:49 +01:00
committed by nikguin04
parent 62f5758ab0
commit 7461b26c97
+7 -2
View File
@@ -9,6 +9,7 @@ import * as WebsocketMessages from '$lib/platform_shared/websocket_message'
export const MESSAGE_TYPE_TO_KEY = new Map<MessageFns<unknown>, string>() export const MESSAGE_TYPE_TO_KEY = new Map<MessageFns<unknown>, string>()
export const MESSAGE_TYPE_TO_TAG = new Map<MessageFns<unknown>, number>() export const MESSAGE_TYPE_TO_TAG = new Map<MessageFns<unknown>, number>()
export const MESSAGE_KEY_TO_TAG = new Map<string, number>() export const MESSAGE_KEY_TO_TAG = new Map<string, number>()
export const MESSAGE_TAG_TO_KEY = new Map<number, string>()
const websocketMessageType = websocket_md.fileDescriptor.messageType?.find( const websocketMessageType = websocket_md.fileDescriptor.messageType?.find(
(msg: { name: string }) => msg.name === 'WebsocketMessage' (msg: { name: string }) => msg.name === 'WebsocketMessage'
@@ -22,6 +23,7 @@ if (websocketMessageType?.field) {
MESSAGE_TYPE_TO_KEY.set(messageFns, field.jsonName) MESSAGE_TYPE_TO_KEY.set(messageFns, field.jsonName)
MESSAGE_TYPE_TO_TAG.set(messageFns, field.number) MESSAGE_TYPE_TO_TAG.set(messageFns, field.number)
MESSAGE_KEY_TO_TAG.set(field.jsonName, field.number) MESSAGE_KEY_TO_TAG.set(field.jsonName, field.number)
MESSAGE_TAG_TO_KEY.set(field.number, field.jsonName)
} }
} }
} }
@@ -74,7 +76,7 @@ function createWebSocket() {
const message_listeners = new Map<number, Set<(data?: unknown) => void>>() const message_listeners = new Map<number, Set<(data?: unknown) => void>>()
const event_listeners = new Map<string, Set<(data?: unknown) => void>>() const event_listeners = new Map<string, Set<(data?: unknown) => void>>()
const { subscribe, set } = writable(false) const { subscribe, set } = writable(false)
const reconnectTimeoutTime = 5000 const reconnectTimeoutTime = 500000
let unresponsiveTimeoutId: ReturnType<typeof setTimeout> let unresponsiveTimeoutId: ReturnType<typeof setTimeout>
let reconnectTimeoutId: ReturnType<typeof setTimeout> let reconnectTimeoutId: ReturnType<typeof setTimeout>
let ws: WebSocket let ws: WebSocket
@@ -107,7 +109,10 @@ function createWebSocket() {
ws.onmessage = frame => { ws.onmessage = frame => {
resetUnresponsiveCheck() resetUnresponsiveCheck()
const { tag, msg } = decodeMessage(frame.data) const { tag, msg } = decodeMessage(frame.data)
if (tag) message_listeners.get(tag)?.forEach(listener => listener(msg)) if (tag) {
const key = MESSAGE_TAG_TO_KEY.get(tag)!
message_listeners.get(tag)?.forEach(listener => listener(msg[key as keyof typeof msg]))
}
} }
ws.onerror = ev => disconnect('error', ev) ws.onerror = ev => disconnect('error', ev)
ws.onclose = ev => disconnect('close', ev) ws.onclose = ev => disconnect('close', ev)