dnode使用对称协议,这样任一侧可以定义相对侧可以调用的函数。您可以采取两种基本方法。
第一种方式是定义在服务器端的寄存器功能和从客户端的回调通过。
服务器:
var dnode = require('dnode');
dnode(function (remote, conn) {
this.register = function (cb) {
// now just call `cb` whenever you like!
// you can call cb() with whichever arguments you like,
// including other callbacks!
setTimeout(function() {
cb(55);
}, 1337);
};
}).listen(5000)
客户端:
var dnode = require('dnode');
dnode.connect('localhost', 5000, function (remote, conn) {
remote.register(function (x) {
console.log('the server called me back with x=' + x);
});
});
或代替你可以直接调用从服务器的客户端以对称的方式,一旦方法交换完成:
服务器:
var dnode = require('dnode');
dnode(function (remote, conn) {
conn.on('ready', function() {
remote.foo(55);
});
}).listen(5000);
客户端:
var dnode = require('dnode');
dnode(function (remote, conn) {
this.foo = function (n) {
console.log('the server called me back with n=' + n);
};
}).connect('localhost', 5000);
感谢您的澄清。客户端可以连接到服务器并等待来自服务器的来电吗?另外,是否有可以使用服务器端的客户端标识符? – Luc
我用conn.id和remote来跟踪客户端。这工作真的很棒。 – Luc
刚刚意识到这个答案来自于他自己。 <3 dat家伙 - 这么多真棒模块! – MiniGod