mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-12 00:55:34 +00:00
chore: OliveTin 3k progress
This commit is contained in:
50
frontend/js/websocket.js
Normal file
50
frontend/js/websocket.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import {
|
||||
refreshServerConnectionLabel
|
||||
} from './marshaller.js'
|
||||
|
||||
export function checkWebsocketConnection () {
|
||||
reconnectWebsocket()
|
||||
}
|
||||
|
||||
window.websocketAvailable = false
|
||||
|
||||
async function reconnectWebsocket () {
|
||||
if (window.websocketAvailable) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
window.websocketAvailable = true
|
||||
for await (let e of window.client.eventStream()) {
|
||||
handleEvent(e)
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Websocket connection failed: ', err)
|
||||
}
|
||||
|
||||
window.websocketAvailable = false
|
||||
console.log('Reconnecting websocket...')
|
||||
}
|
||||
|
||||
function handleEvent (msg) {
|
||||
const typeName = msg.event.value.$typeName.replace('olivetin.api.v1.', '')
|
||||
|
||||
console.log("Websocket event receved: ", typeName)
|
||||
|
||||
const j = new Event(typeName)
|
||||
j.payload = msg.event.value
|
||||
|
||||
switch (typeName) {
|
||||
case 'EventOutputChunk':
|
||||
case 'EventConfigChanged':
|
||||
case 'EventEntityChanged':
|
||||
case 'EventExecutionFinished':
|
||||
case 'EventExecutionStarted':
|
||||
window.dispatchEvent(j)
|
||||
break
|
||||
default:
|
||||
console.warn('Unhandled websocket message type from server: ', typeName)
|
||||
|
||||
window.showBigError('ws-unhandled-message', 'handling websocket message', 'Unhandled websocket message type from server: ' + typeName, true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user