aboutsummaryrefslogtreecommitdiffstats
path: root/lib/websocket.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/websocket.js')
-rw-r--r--lib/websocket.js78
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;