| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import {
- refreshServerConnectionLabel
- } from './marshaller.js'
- window.ws = null
- export function checkWebsocketConnection () {
- if (window.ws === null || window.ws.readyState === 3) {
- reconnectWebsocket()
- }
- }
- function reconnectWebsocket () {
- window.websocketAvailable = false
- const websocketConnectionUrl = new URL(window.location.toString())
- websocketConnectionUrl.hash = ''
- websocketConnectionUrl.pathname += 'websocket'
- if (window.location.protocol === 'https:') {
- websocketConnectionUrl.protocol = 'wss'
- } else {
- websocketConnectionUrl.protocol = 'ws'
- }
- window.websocketConnectionUrl = websocketConnectionUrl
- const ws = window.ws = new WebSocket(websocketConnectionUrl.toString())
- ws.addEventListener('open', websocketOnOpen)
- ws.addEventListener('message', websocketOnMessage)
- ws.addEventListener('error', websocketOnError)
- ws.addEventListener('close', websocketOnClose)
- }
- function websocketOnOpen (evt) {
- window.websocketAvailable = true
- window.ws.send('monitor')
- refreshServerConnectionLabel()
- window.refreshLoop()
- }
- function websocketOnMessage (msg) {
- // FIXME check msg status is OK
- const j = JSON.parse(msg.data)
- const e = new Event(j.type)
- e.payload = j.payload
- switch (j.type) {
- case 'EventOutputChunk':
- case 'EventConfigChanged':
- case 'EventExecutionFinished':
- case 'EventEntityChanged':
- window.dispatchEvent(e)
- break
- default:
- window.showBigError('ws-unhandled-message', 'handling websocket message', 'Unhandled websocket message type from server: ' + j.type, true)
- }
- }
- function websocketOnError (err) {
- window.websocketAvailable = false
- window.refreshLoop()
- console.log(err)
- window.showBigError('ws-connect-error', 'connecting to the websocket', 'Please see your browser console for debugging information.', true)
- refreshServerConnectionLabel()
- }
- function websocketOnClose () {
- window.websocketAvailable = false
- refreshServerConnectionLabel()
- }
|