Socket
Socket
Sign inDemoInstall

dnode

Package Overview
Dependencies
Maintainers
0
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dnode - npm Package Compare versions

Comparing version 0.5.9 to 0.6.0

browser.js

103

lib/stream_socketio.js
var EventEmitter = require('events').EventEmitter;
var io = require('socket.io');
var fs = require('fs');
var browserify = require('browserify');
StreamIO.prototype = new EventEmitter;
function StreamIO (client) {
var dnodeSrc = 'var DNode = (function () {'
+ browserify.bundle(
JSON.parse(
fs.readFileSync(__dirname + '/../package.json', 'utf8')
).browserify
)
+ '; return require("dnode") })()'
;
module.exports = function (webserver, mount) {
var sock = io.listen(webserver);
var server = new EventEmitter;
this.remoteAddress = '???';
this.remotePort = -1;
if (client && client.request && client.request.socket) {
this.remoteAddress = client.request.socket.remoteAddress;
this.remotePort = client.request.socket.remotePort;
if (mount && webserver.use) {
webserver.use(function (req, res, next) {
if (req.url === mount) {
res.writeHead(200, { 'Content-Type' : 'text/javascript' });
res.end(dnodeSrc);
}
else next()
});
}
else if (mount) {
if (!webserver._events) webserver._events = {};
var ev = webserver._events;
if (!ev.request) ev.request = [];
if (!Array.isArray(ev.request)) ev.request = [ ev.request ];
ev.request.unshift(function (req, res) {
if (req.url === mount) {
res.writeHead(200, { 'Content-Type' : 'text/javascript' });
res.end(dnodeSrc);
}
});
}
this.socketio = client;
this.readyState = 'open';
this.write = function (msg) {
client.send(msg);
};
this.end = function (msg) {
this.readyState = 'closed';
if (msg) this.write(msg);
this.emit('end');
};
this.destroy = function () {
if (this.readyState != 'closed') this.end();
};
}
module.exports = function (sock, handler) {
var streams = {};
sock.on('clientConnect', function (client) {
var id = client.sessionId;
streams[id] = new StreamIO(client);
handler(streams[id]);
streams[id].emit('connect');
sock.on('connection', function (client) {
var stream = new EventEmitter;
stream.socketio = client;
stream.readable = true;
stream.writable = true;
stream.write = client.send.bind(client);
stream.end = client.connection.end.bind(client);
stream.destroy = client.connection.destroy.bind(client);
client.on('message', stream.emit.bind(stream, 'data'));
client.on('error', stream.emit.bind(stream, 'error'));
client.on('disconnect', function () {
stream.writable = false;
stream.readable = false;
stream.emit('end');
});
server.emit('connection', stream);
});
sock.on('clientMessage', function (msg, client) {
var id = client.sessionId;
streams[id].emit('data', msg);
});
sock.on('clientDisconnect', function (client) {
var id = client.sessionId;
streams[id].emit('disconnect');
streams[id].end();
});
return server;
};
{
"name" : "dnode",
"version" : "0.5.9",
"description" : "Call remote methods and callbacks with a JSON-based protocol. RMI for network sockets and the browser too!",
"main" : "./lib/dnode.js",
"modules" : {
"web" : "./lib/web"
},
"directories" : {
"lib" : "./lib"
},
"version" : "0.6.0",
"description" : "Execute remote callbacks with a JSON-based protocol. RMI for network sockets and socket.io too!",
"main" : "./index.js",
"keywords" : [

@@ -24,13 +18,24 @@ "message passing",

},
"directories" : {
"lib" : "./lib",
"examples" : "./examples"
},
"dependencies" : {
"socket.io" : ">=0.6.1",
"lazy" : ">=1.0.1",
"lazy" : ">=1.0.2",
"traverse" : ">=0.3.1",
"hashish" : ">=0.0.2",
"recon" : ">=0.0.5"
"browserify" : ">=0.2.2",
"dnode-protocol" : ">=0.0.5"
},
"engine" : {
"node" : ">=0.4.0"
"browserify" : {
"name" : "dnode",
"base" : "./browser",
"require" : [ "dnode-protocol" ]
},
"author": "James Halliday <mail@substack.net> (http://substack.net/)"
"engine" : { "node" : ">=0.4.0" },
"author" : {
"name" : "James Halliday",
"email" : "mail@substack.net",
"url" : "http://substack.net"
}
}

@@ -30,2 +30,4 @@ var DNode = require('dnode');

assert.equal(res, 60, 'result of 20 * 3 == 60');
conn.end();
server.close();
});

@@ -35,7 +37,6 @@ });

setTimeout(function () {
server.once('close', function () {
assert.equal(counts.timesX, 1, 'timesX called once');
assert.equal(counts.clientX, 1, 'clientX called once');
server.end();
}, 300);
});
};

@@ -56,2 +56,3 @@ var DNode = require('dnode');

server.end();
server.close();
assert.equal(

@@ -58,0 +59,0 @@ sys.inspect(recv[0]),

@@ -23,3 +23,3 @@ var DNode = require('dnode');

server.on('ready', function () {
DNode.connect(port, function (remote) {
DNode.connect(port, function (remote, conn) {
var obj = { a : 1, b : 2 };

@@ -39,3 +39,4 @@ obj.c = obj;

);
server.end();
conn.end();
server.close();
});

@@ -42,0 +43,0 @@ });

@@ -17,3 +17,3 @@ var DNode = require('dnode');

server.on('ready', function () {
DNode.connect(port, function (remote) {
DNode.connect(port, function (remote, conn) {
remote.z(

@@ -25,3 +25,2 @@ function (x,f) { f(x * 2) },

assert.equal(y, 5, 'double, not equal');
server.end();
}

@@ -35,3 +34,4 @@ );

assert.equal(y, 20, 'double, equal');
server.end();
conn.end();
server.close();
});

@@ -38,0 +38,0 @@ });

@@ -47,3 +47,3 @@ var DNode = require('dnode');

server.on('ready', function () {
DNode.connect(port, function (remote) {
DNode.connect(port, function (remote, conn) {
remote.pass('test1', ev);

@@ -56,7 +56,8 @@ var test2_calls = 0;

remote.emit('test2');
conn.end();
server.close();
});
});
});
setTimeout(function () { server.end() }, 750);
};
var DNode = require('dnode');
var sys = require('sys');
exports.simple = function (assert) {
exports.errors = function (assert) {
var port = Math.floor(Math.random() * 40000 + 10000);
var errors = { server : [], client : [] };
var server = DNode(function (remote) {
var server = DNode(function (remote, conn) {
conn.on('error', function (err) {
errors.server.push(err);
});
this.one = function () {

@@ -21,74 +26,41 @@ throw 'string throw'

var ended = { client : false, server : false };
var ts = setTimeout(function () {
assert.fail('server never ended');
}, 5000);
var serverErrors = { local : [], remote : [] };
server.on('remoteError', function (err) {
serverErrors.remote.push(err);
});
server.on('localError', function (err) {
serverErrors.local.push(err);
});
server.on('end', function () {
assert.equal(serverErrors.remote.length, 1);
assert.equal(serverErrors.local.length, 2);
ended.server = true;
clearTimeout(ts);
assert.eql(errors.server[0], 'string throw');
try { undefined.name }
catch (refErr) {
assert.eql(refErr.message, errors.server[1].message);
assert.eql(refErr.type, errors.server[1].type);
}
assert.equal(errors.server.length, 2);
assert.eql(errors.client, [ 'Local error' ]);
});
var errNum = 0;
var caughtLocal = false;
server.on('ready', function () {
var client = DNode(function (client, conn) {
conn.on('remoteError', function (err) {
errNum ++;
if (errNum == 1) {
assert.equal(err, 'string throw');
}
else if (errNum == 2) {
try { undefined.name }
catch (refErr) {
assert.equal(err.name, refErr.name);
assert.equal(err.message, refErr.message);
assert.equal(err.type, refErr.type);
}
}
conn.on('error', function (err) {
errors.client.push(err);
});
conn.on('localError', function (err) {
assert.equal(err, 'Local error');
caughtLocal = true;
});
conn.on('end', function () {
assert.equal(clientErrors.remote.length, 2);
assert.equal(clientErrors.local.length, 1);
ended.client = true;
});
this.pow = function () {
throw 'Local error';
};
}).connect(port, function (remote) {
}).connect(port, function (remote, conn) {
remote.one();
remote.two();
remote.three();
setTimeout(function () {
conn.end();
server.end();
server.close();
}, 100);
});
var clientErrors = { local : [], remote : [] };
client.on('localError', function (err) {
clientErrors.local.push(err);
});
client.on('remoteError', function (err) {
clientErrors.remote.push(err);
});
});
setTimeout(function () {
assert.equal(errNum, 2);
assert.ok(caughtLocal);
server.end();
setTimeout(function () {
assert.ok(ended.server);
assert.ok(ended.client);
}, 50);
}, 200);
};

@@ -28,2 +28,3 @@ var DNode = require('dnode');

assert.equal(res2, 100000, 'result times twenty');
conn1.end(); conn2.end();
server1.close(); server2.close();

@@ -30,0 +31,0 @@ });

@@ -13,3 +13,3 @@ var DNode = require('dnode');

server.on('ready', function () {
DNode.connect(port, function (remote) {
DNode.connect(port, function (remote, conn) {
remote.getObject(function (rObj) {

@@ -26,2 +26,3 @@ assert.equal(rObj.a, 1);

assert.equal(res, 260);
conn.end();
server.close();

@@ -28,0 +29,0 @@ });

@@ -9,37 +9,42 @@ var dnode = require('dnode');

var dto = setTimeout(function () {
assert.fail('never dropped');
}, 10000);
var multiplier = null;
var running = false;
function makeServer (m) {
multipler = m;
var s = dnode(function (remote, conn) {
this.mult = function (n, cb) {
cb(n * m);
conn.end();
};
}).listen(port);
return s;
}
var server = makeServer(10);
var server1 = dnode({
decify : function (n, cb) { cb(n * 10) },
}).listen(port);
var client = dnode.connect({
host : 'localhost',
port : port,
reconnect : 100,
block : session,
});
var client = dnode.connect(
'localhost', port, { reconnect : 10 },
function (remote, conn) {
clearTimeout(to);
conn.once('drop', function () {
clearTimeout(dto);
});
remote.decify(5, function (x) {
assert.eql(x, 50);
server1.close();
setTimeout(function () {
var server2 = dnode({
decify : function (n, cb) { cb(n * 0.1) }
}).listen(port);
remote.decify(5, function (x) {
assert.eql(x, 0.5);
client.end();
conn.end();
server2.close();
});
}, 500);
});
}
);
var res = {};
function session (remote, conn) {
clearTimeout(to);
remote.mult(5, function (x) {
res[multipler] = x;
assert.eql(x, 5 * multipler);
conn.end();
server.close();
});
}
server.once('close', function () {
server = makeServer(33);
server.once('close', function () {
assert.eql(res, { 10 : 10 * 5, 33 : 33 * 5 });
});
});
};

@@ -13,4 +13,5 @@ var DNode = require('dnode');

server.on('ready', function () {
DNode.connect(port, function (remote) {
server.end();
DNode.connect(port, function (remote, conn) {
conn.end();
server.close();
assert.equal(

@@ -17,0 +18,0 @@ remote.a, 1,

@@ -28,3 +28,3 @@ var DNode = require('dnode')

remote.print(args, function (m) {
conn.end();
server.close();

@@ -31,0 +31,0 @@

@@ -1,2 +0,2 @@

var DNode = require('dnode');
var dnode = require('dnode');

@@ -7,3 +7,3 @@

var server = DNode({
var server = dnode({
timesTen : function (n,reply) {

@@ -21,3 +21,3 @@ assert.equal(n, 50);

server.on('ready', function () {
DNode.connect(port, function (remote, conn) {
dnode.connect(port, function (remote, conn) {
assert.ok(conn.id);

@@ -33,2 +33,3 @@ assert.equal(conn.stream.remoteAddress, '127.0.0.1');

assert.equal(n, 500, '50 * 10 == 500');
conn.end();
server.close();

@@ -35,0 +36,0 @@ });

@@ -27,4 +27,4 @@ var DNode = require('dnode')

assert.equal(m, 50, '5 * 10 == 50');
conn.end();
server.close();
});

@@ -31,0 +31,0 @@ });

@@ -1,35 +0,32 @@

var DNode = require('dnode');
var assert = require('assert');
var dnode = require('dnode');
var net = require('net');
var sys = require('sys');
exports.stream = function (assert) {
exports.stream = function () {
var port = Math.floor(Math.random() * 40000 + 10000);
var server = DNode({
var server = dnode({
meow : function f (g) { g('cats') }
});
var netServer = net.createServer(function (stream) {
server.withStream(stream);
setTimeout(function () { stream.end() }, 200);
})
netServer.listen(port, 'localhost');
var netServer = net.createServer();
server.listen(netServer);
var netClient = net.createConnection(port);
var to = setTimeout(function () {
assert.fail();
}, 5000);
var times = 0;
server.on('ready', function () {
DNode.connect(netClient, function (remote) {
netServer.listen(port, function () {
var netClient = net.createConnection(port);
dnode.connect(netClient, function (remote) {
remote.meow(function (cats) {
times ++;
clearTimeout(to);
assert.equal(cats, 'cats');
netClient.end();
netServer.close();
});
});
});
setTimeout(function () {
assert.equal(times, 1);
netClient.end();
netServer.close();
}, 200);
};

@@ -1,2 +0,2 @@

var DNode = require('dnode');
var dnode = require('dnode');

@@ -6,3 +6,3 @@ exports.simple = function (assert) {

var server = DNode({
var server = dnode({
unicodes : function (reply) {

@@ -14,3 +14,3 @@ reply('☔☔☔☁☼☁❄');

server.on('ready', function () {
DNode.connect(port, function (remote, conn) {
dnode.connect(port, function (remote, conn) {
assert.equal(conn.stream.remoteAddress, '127.0.0.1');

@@ -20,5 +20,9 @@ remote.unicodes(function (str) {

});
server.end();
setTimeout(function () {
conn.end();
server.close();
}, 50);
});
});
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc