Index: lams_central/web/includes/javascript/websocket.js =================================================================== diff -u -r9496ff3ffe5e98272f7939a2cf4e8c6dbb2901f7 -r876e644c066e81c2721ffa085fd12f386e2f3bb6 --- lams_central/web/includes/javascript/websocket.js (.../websocket.js) (revision 9496ff3ffe5e98272f7939a2cf4e8c6dbb2901f7) +++ lams_central/web/includes/javascript/websocket.js (.../websocket.js) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) @@ -60,7 +60,7 @@ } }; -function initWebsocket(instanceName, url){ +function initWebsocket(instanceName, url, onMessageFunction){ let websocket = lamsWebsockets[instanceName]; if (!websocket) { websocket = { @@ -72,6 +72,9 @@ }; lamsWebsockets[instanceName] = websocket; } else if (websocket.instance) { + if (!onMessageFunction) { + onMessageFunction = websocket.instance.onmessage; + } try { websocket.instance.close(1000); } catch (e) { @@ -99,9 +102,26 @@ websocketReconnect(instanceName); } }; + if (onMessageFunction) { + websocket.instance.onmessage = onMessageFunction; + } // set up timer for the first time websocketPing(instanceName, true); return websocket.instance; +} + +function sendToWebsocket(instanceName, message) { + let websocket = lamsWebsockets[instanceName]; + if (!websocket) { + console.error("Websocket not initialized: " + instanceName); + return; + } + if (websocket.instance.readyState == WebSocket.CLOSING + || websocket.instance.readyState == WebSocket.CLOSED){ + websocketReconnect(instanceName); + return; + } + websocket.instance.send(message); } \ No newline at end of file