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