| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { buttonResults } from '../resources/vue/stores/buttonResults.js'
- export function checkWebsocketConnection () {
- reconnectWebsocket()
- }
- window.websocketAvailable = false
- async function reconnectWebsocket () {
- if (window.websocketAvailable) {
- return
- }
- try {
- window.websocketAvailable = true
- for await (const 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.', '')
- const j = new Event(typeName)
- j.payload = msg.event.value
- switch (typeName) {
- case 'EventOutputChunk':
- case 'EventConfigChanged':
- case 'EventEntityChanged':
- window.dispatchEvent(j)
- break
- case 'EventExecutionFinished':
- case 'EventExecutionStarted':
- buttonResults[msg.event.value.logEntry.executionTrackingId] = msg.event.value.logEntry
- 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)
- }
- }
|