better reconnect
This commit is contained in:
parent
877f888c96
commit
d99b4d53e1
|
|
@ -8,6 +8,8 @@ import { addErrorMessage } from "./scrollback.js"
|
|||
|
||||
const MAX_RETRIES = 5
|
||||
let retries = 0
|
||||
let connected = false
|
||||
let msgQueue: Message[] = []
|
||||
|
||||
let ws: WebSocket | null = null
|
||||
|
||||
|
|
@ -20,10 +22,21 @@ export function startConnection() {
|
|||
ws.onmessage = receive
|
||||
ws.onclose = retryConnection
|
||||
ws.onerror = () => ws?.close()
|
||||
ws.onopen = () => {
|
||||
connected = true
|
||||
msgQueue.forEach(msg => send(msg))
|
||||
msgQueue.length = 0
|
||||
}
|
||||
}
|
||||
|
||||
// send any message
|
||||
export function send(msg: Message) {
|
||||
if (!connected) {
|
||||
msgQueue.push(msg)
|
||||
startConnection()
|
||||
return
|
||||
}
|
||||
|
||||
if (!msg.session) msg.session = sessionID
|
||||
ws?.readyState === 1 && ws.send(JSON.stringify(msg))
|
||||
console.log("-> send", msg)
|
||||
|
|
@ -41,6 +54,8 @@ export function close() {
|
|||
}
|
||||
|
||||
function retryConnection() {
|
||||
connected = false
|
||||
|
||||
if (retries >= MAX_RETRIES) {
|
||||
addErrorMessage(`!! Failed to reconnect ${retries} times. Server is down.`)
|
||||
if (ws) ws.onclose = () => { }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user