From a4a52e7ed483625f9761b3eb84ee45c4d77abb12 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Mon, 7 Nov 2016 22:44:54 +0100 Subject: [PATCH] Add websockets messages until its connected --- src/Ui/media/lib/ZeroWebsocket.coffee | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Ui/media/lib/ZeroWebsocket.coffee b/src/Ui/media/lib/ZeroWebsocket.coffee index eebafa0a..01228226 100644 --- a/src/Ui/media/lib/ZeroWebsocket.coffee +++ b/src/Ui/media/lib/ZeroWebsocket.coffee @@ -16,6 +16,8 @@ class ZeroWebsocket @ws.onopen = @onOpenWebsocket @ws.onerror = @onErrorWebsocket @ws.onclose = @onCloseWebsocket + @connected = false + @message_queue = [] onMessage: (e) => @@ -47,7 +49,11 @@ class ZeroWebsocket if not message.id? message.id = @next_message_id @next_message_id += 1 - @ws.send(JSON.stringify(message)) + if @connected + @ws.send(JSON.stringify(message)) + else + @log "Not connected, adding message to queue" + @message_queue.push(message) if cb @waiting_cb[message.id] = cb @@ -58,6 +64,13 @@ class ZeroWebsocket onOpenWebsocket: (e) => @log "Open" + @connected = true + + # Process messages sent before websocket opened + for message in @message_queue + @ws.send(JSON.stringify(message)) + @message_queue = [] + if @onOpen? then @onOpen(e) @@ -68,6 +81,7 @@ class ZeroWebsocket onCloseWebsocket: (e, reconnect=10000) => @log "Closed", e + @connected = false if e and e.code == 1000 and e.wasClean == false @log "Server error, please reload the page", e.wasClean else # Connection error