节点
dnode 是一个用于节点的同步的 rpc 系统.js 允许您 调用远程函数.
您可以将调用调用通过远程函数,远程端可以调用 使用它自己的召回功能等. 倒计时!

实例
听和连接
服务器 :
var dnode = require('dnode');
var server = dnode({
transform : function (s, cb) {
cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase())
}
});
server.listen(5004);
客户端 :
var dnode = require('dnode');
var d = dnode.connect(5004);
d.on('remote', function (remote) {
remote.transform('beep', function (s) {
console.log('beep => ' + s);
d.end();
});
});
输出 :
$ node server.js &
[1] 27574
$ node client.js
beep => BOOP
流线
这个 .connect() 财务报告和审定财务报表 .listen() 前一个例子中的呼吁只是
接通可读/可写流的方便方法.
以下是前一个例子,其中明确设置了溪流:
服务器 :
var dnode = require('dnode');
var net = require('net');
var server = net.createServer(function (c) {
var d = dnode({
transform : function (s, cb) {
cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase())
}
});
c.pipe(d).pipe(c);
});
server.listen(5004);
客户端 :
var dnode = require('dnode');
var net = require('net');
var d = dnode();
d.on('remote', function (remote) {
remote.transform('beep', function (s) {
console.log('beep => ' + s);
d.end();
});
});
var c = net.connect(5004);
c.pipe(d).pipe(c);
输出 :
$ node server.js &
[1] 27586
$ node client.js
beep => BOOP
浏览器中的 dnode
由于 dnode 实例只是可读/ 可写流, 您可以用 包括浏览器中的任何流媒体传输!
此示例使用由 鞋头上面只是薄薄的包装纸 袜子 提供倒置的网索.
首先鞭打服务器 :
var http = require('http');
var shoe = require('shoe');
var ecstatic = require('ecstatic')(__dirname + '/static');
var dnode = require('dnode');
var server = http.createServer(ecstatic);
server.listen(9999);
var sock = shoe(function (stream) {
var d = dnode({
transform : function (s, cb) {
var res = s.replace(/[aeiou]{2,}/, 'oo').toUpperCase();
cb(res);
}
});
d.pipe(stream).pipe(d);
});
sock.install(server, '/dnode');
然后写一些浏览器代码 :
var domready = require('domready');
var shoe = require('shoe');
var dnode = require('dnode');
domready(function () {
var result = document.getElementById('result');
var stream = shoe('/dnode');
var d = dnode();
d.on('remote', function (remote) {
remote.transform('beep', function (s) {
result.textContent = 'beep => ' + s;
});
});
d.pipe(stream).pipe(d);
});
安装此示例的依赖性, 然后编译浏览器代码 浏览器数字 :
$ npm install dnode shoe domready ecstatic
$ npm install -g browserify
$ browserify client.js -o static/bundle.js
现在将脚本标记放入静态/ 索引中 。 html: 请检查url=值 (帮助)
<script src="/bundle.js"></script>
<div id="result"></div>
并导航至http://localhost:9999.
你应该看看 beep => BOOP 在页面上!
看看这个 完整鞋样示例。 。 。 .
方法
var dnode = require('dnode')
var d = dnode(cons, opts- ) (中文(简体) )
创建新的可读/可写 dnode 流对象 d。 。 。 .
所有常用的流法都可以使用:管(),写(),出().
若为 cons 是一个函数,将称为 new cons(remote, d) 创建新的
实例对象。 否则,其价值将被直接使用。 何时 cons 实值
作为函数 remote ref 将是一个空的无人口对象 .
默认情况下, dnode 使用微缩图来收集未使用的回调 自动。 这种行为可以防止长期连接中的内存出漏.
通过设置可以关闭弱相 opts.weak = false。 。 。 .
d. 连接(.)
这种方法是设置管道的快捷键 d 和一个新的
net.connect() 流线.
所提供的主机、端口和回调参数将根据其 类型.
如果你通过回调 作为争论, 它会增加 作为听众
'remote' 活动.
返回 d 对象.
dnode. 连接(...)
快捷键以创建没有构造器的连接 .
d. listen( ) (...)
这种方法是设置 net.createServer() 和管道
网络流到和从新的dnode流.
主机、端口和召回参数将从类型中推断出来 参数.
返回将同时发射的网络服务器对象 'local' 财务报告和审定财务报表 'remote' 事件
从深处取出.
dnode. listen (...) (中文(简体) )
快捷键创建一个没有构造器的收听器 .
事件
d.on(远处), cb)
这个事件与 cb(remote, d) 当连接的远程侧面
已经构建了它的实例.
d.on(“当地”、cb)
此事件在本地创建实例后即发生 但是在它被发送到远程端之前,你可以修改参考对象.
这个事件与 cb(ref, d) 地点 ref 是本地实例对象.
d. on ('fail', cb) (英语)
当远程端导致协议层出错时,此事件会起火.
这些是非致命的,也许可以忽略 但你也可以终止 连接这里.
d.on('error', cb) (中文(简体) )
当本地代码导致其回调错误时,此事件会起火. 并非所有错误都可以在这里被捕获,因为有些可能处于同源函数中.
d.on('end', cb) (中文(简体) )
此事件在输入流完成时会起火.
安装
与 无 ưμ㼯a
npm install dnode
协议
dnode 使用新线终止的 JSON 协议 dnode-protocol 计划中的文档。 。 。 .
其他语言的dnode
这些库也执行 dnode 协议, 这样您就可以调用 RPC 在以不同语言编写的脚本之间.
无耻的插头
想确定你那疯狂的 Javascript-重磅的应用 还在其它地方工作 浏览器? 给 浏览器 一个旋转! 在您的浏览器中浏览器 。 由dnode提供动力.
