diff options
author | Marian OANCΞA <contact@siteshop.ro> | 2014-11-11 23:20:53 +0800 |
---|---|---|
committer | Marian OANCΞA <contact@siteshop.ro> | 2014-11-11 23:20:53 +0800 |
commit | d85cef557bf3a312097544c27fe54fdf745f1e11 (patch) | |
tree | a4dc794d580de2139eb9a5831058778fe88c3c0a /lib/websocket.js | |
parent | dea68f073e9a071e3e3940f7a467bf3cdc8d1992 (diff) | |
parent | 838ca2fd9393e5b3cd4423934de78f1b8f9fd13f (diff) | |
download | go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar.gz go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar.bz2 go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar.lz go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar.xz go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.tar.zst go-tangerine-d85cef557bf3a312097544c27fe54fdf745f1e11.zip |
Merge pull request #8 from debris/autoprovider
Autoprovider
Diffstat (limited to 'lib/websocket.js')
-rw-r--r-- | lib/websocket.js | 78 |
1 files changed, 40 insertions, 38 deletions
diff --git a/lib/websocket.js b/lib/websocket.js index 93d58aeba..0c7563062 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -16,59 +16,61 @@ */ /** @file websocket.js * @authors: + * Jeffrey Wilcke <jeff@ethdev.com> * Marek Kotewicz <marek@ethdev.com> * Marian Oancea <marian@ethdev.com> * @date 2014 */ -if(process.env.NODE_ENV !== "build") { +if (process.env.NODE_ENV !== "build") { var WebSocket = require('ws'); // jshint ignore:line } - var WebSocketProvider = function(host) { - // onmessage handlers - this.handlers = []; - // queue will be filled with messages if send is invoked before the ws is ready - this.queued = []; - this.ready = false; +var WebSocketProvider = function(host) { + // onmessage handlers + this.handlers = []; + // queue will be filled with messages if send is invoked before the ws is ready + this.queued = []; + this.ready = false; - this.ws = new WebSocket(host); + this.ws = new WebSocket(host); - var self = this; - this.ws.onmessage = function(event) { - for(var i = 0; i < self.handlers.length; i++) { - self.handlers[i].call(self, JSON.parse(event.data), event); - } - }; - - this.ws.onopen = function() { - self.ready = true; - - for(var i = 0; i < self.queued.length; i++) { - // Resend - self.send(self.queued[i]); - } - }; + var self = this; + this.ws.onmessage = function(event) { + for(var i = 0; i < self.handlers.length; i++) { + self.handlers[i].call(self, JSON.parse(event.data), event); + } }; - WebSocketProvider.prototype.send = function(payload) { - if(this.ready) { - var data = JSON.stringify(payload); - this.ws.send(data); - } else { - this.queued.push(payload); + this.ws.onopen = function() { + self.ready = true; + + for(var i = 0; i < self.queued.length; i++) { + // Resend + self.send(self.queued[i]); } }; +}; - WebSocketProvider.prototype.onMessage = function(handler) { - this.handlers.push(handler); - }; +WebSocketProvider.prototype.send = function(payload) { + if(this.ready) { + var data = JSON.stringify(payload); - WebSocketProvider.prototype.unload = function() { - this.ws.close(); - }; - Object.defineProperty(WebSocketProvider.prototype, "onmessage", { - set: function(provider) { this.onMessage(provider); } - }); + this.ws.send(data); + } else { + this.queued.push(payload); + } +}; + +WebSocketProvider.prototype.onMessage = function(handler) { + this.handlers.push(handler); +}; + +WebSocketProvider.prototype.unload = function() { + this.ws.close(); +}; +Object.defineProperty(WebSocketProvider.prototype, "onmessage", { + set: function(provider) { this.onMessage(provider); } +}); module.exports = WebSocketProvider; |