From 024af1ebfbde561fe2f0965813ffdde927af9fd4 Mon Sep 17 00:00:00 2001 From: cubedro Date: Mon, 16 Feb 2015 23:30:21 +0200 Subject: [PATCH] added primus socket functionality --- lib/node.js | 65 ++++++++++++++++++++++------------------------------ package.json | 5 ++-- 2 files changed, 30 insertions(+), 40 deletions(-) diff --git a/lib/node.js b/lib/node.js index 20a780a..341723d 100644 --- a/lib/node.js +++ b/lib/node.js @@ -2,10 +2,18 @@ var web3 = require('ethereum.js'); var _ = require('underscore'); var os = require('os'); var slugs = require('slugs'); -var HttpRequest = require('xmlhttprequest').XMLHttpRequest; -var io = require('socket.io-client'); -var socket = io.connect('http://localhost:3000', {reconnect: true}); +var Primus = require('primus'), + Emitter = require('primus-emit'), + Socket; + +Socket = Primus.createSocket({ + transformer: 'websockets', + pathname: '/api', + plugin: {emitter: Emitter} +}); + +var socket = new Socket(process.env.WS_SERVER || 'ws://localhost:3000'); var MAX_BLOCKS_HISTORY = 12, LOWEST_TIMESTAMP = 0; @@ -15,9 +23,8 @@ function Node() var self = this; this.info = { - ip: getExternalIp(), - name: process.env.ETH_CLIENT, - type: process.env.ETH_TYPE, + name: process.env.ETH_CLIENT || 'C++', + type: process.env.ETH_TYPE || '0.8.1', os: os.platform(), os_v: os.release() }; @@ -42,7 +49,7 @@ function Node() errors: [] } - this.socket = false; + this.socket = null; this.pendingWatch = false; this.chainWatch = false; this.updateInterval = false; @@ -51,41 +58,26 @@ function Node() // this.init(); - socket.on('connect', function(data) { - console.log(data); - + socket.on('open', function open() { self.socket = true; self.emit('hello', self.info); - - console.log('connected!'); - - socket.on('disconnect', function(data) { - console.log(data); - - self.socket = false; - - console.log('disconnected'); - }) + console.log('The connection has been opened.'); + }).on('end', function end() { + self.socket = false; + }).on('error', function error(err) { + console.log(err); + }).on('reconnecting', function reconnecting(opts) { + console.log('We are scheduling a reconnect operation', opts); + }).on('data', function incoming(data) { + console.log('Received some data', data); }); return this; } -function getExternalIp() -{ - var request = new HttpRequest(); - request.open('GET', 'http://curlmyip.com/', false); - request.send(); - - if(request.status !== 200) - return 'unknown'; - - return request.responseText.trim(); -} - Node.prototype.makeId = function() { - return slugs(this.info.name + ' ' + this.info.type + ' ' + this.info.os + ' ' + this.info.os_v + ' ' + this.info.ip); + return slugs(this.info.name + ' ' + this.info.type + ' ' + this.info.os + ' ' + this.info.os_v); } Node.prototype.isActive = function() @@ -289,13 +281,9 @@ Node.prototype.emit = function(message, payload) if(this.socket){ try { socket.emit(message, payload); - - return true } catch (err) { console.log(err); - - return false; } } } @@ -308,7 +296,8 @@ Node.prototype.init = function() Node.prototype.stop = function() { - this.emit('disconnect'); + if(this.socket) + socket.end(socket.id); if(this.updateInterval) clearInterval(this.updateInterval); diff --git a/package.json b/package.json index ff26588..a7f3a81 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,11 @@ "dependencies": { "debug": "~2.0.0", "ethereum.js": "*", + "primus": "^2.4.12", + "primus-emit": "^0.1.2", "slugs": "^0.1.3", - "socket.io-client": "^1.3.3", "underscore": "^1.7.0", - "xmlhttprequest": "*" + "ws": "^0.7.1" }, "scripts": { "start": "node ./app.js"