websocket.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import {
  2. refreshServerConnectionLabel
  3. } from './marshaller.js'
  4. export function checkWebsocketConnection () {
  5. reconnectWebsocket()
  6. }
  7. window.websocketAvailable = false
  8. async function reconnectWebsocket () {
  9. if (window.websocketAvailable) {
  10. return
  11. }
  12. try {
  13. window.websocketAvailable = true
  14. for await (let e of window.client.eventStream()) {
  15. handleEvent(e)
  16. }
  17. } catch (err) {
  18. console.error('Websocket connection failed: ', err)
  19. }
  20. window.websocketAvailable = false
  21. console.log('Reconnecting websocket...')
  22. }
  23. function handleEvent (msg) {
  24. const typeName = msg.event.value.$typeName.replace('olivetin.api.v1.', '')
  25. console.log("Websocket event receved: ", typeName)
  26. const j = new Event(typeName)
  27. j.payload = msg.event.value
  28. switch (typeName) {
  29. case 'EventOutputChunk':
  30. case 'EventConfigChanged':
  31. case 'EventEntityChanged':
  32. case 'EventExecutionFinished':
  33. case 'EventExecutionStarted':
  34. window.dispatchEvent(j)
  35. break
  36. default:
  37. console.warn('Unhandled websocket message type from server: ', typeName)
  38. window.showBigError('ws-unhandled-message', 'handling websocket message', 'Unhandled websocket message type from server: ' + typeName, true)
  39. }
  40. }