From cc5c839cde9116ba85209d17abc8567b568648a0 Mon Sep 17 00:00:00 2001 From: Stefan Thomas Date: Wed, 13 Mar 2013 19:15:37 +0100 Subject: [PATCH] JS: Hold requests until connection is established. This will have to change when we add multiple server support, but it does the trick for now. --- src/js/server.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/js/server.js b/src/js/server.js index 32b44532..9abe5bac 100644 --- a/src/js/server.js +++ b/src/js/server.js @@ -161,11 +161,19 @@ Server.prototype.request = function (request) // Advance message ID this._id++; - if (this._remote.trace) { - utils.logObject("server: request: %s", request.message); - } + if (this._state === "online" || + (request.message.command === "subscribe" && this._ws.readyState === 1)) { + if (this._remote.trace) { + utils.logObject("server: request: %s", request.message); + } - this._ws.send(JSON.stringify(request.message)); + this._ws.send(JSON.stringify(request.message)); + } else { + // XXX There are many ways to make this smarter. + this.once('connect', function () { + this._ws.send(JSON.stringify(request.message)); + }); + } } else { if (this._remote.trace) { utils.logObject("server: request: DROPPING: %s", request.message);