BIG mistake in socket causing no messages to be delivered
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user