【发布时间】:2013-08-05 09:27:03
【问题描述】:
我使用 dnode
我已阅读 StackOverflow:Send message from server to client with dnode
了解一下
dnode 使用对称协议,因此任何一方都可以定义对方可以调用的函数。
作者回复@substack。
所以,现在,我有如下代码:
server.js
var HTTPserver = httpServer('/www')
.listen(9999, function()
{
console.log('HTTP listening 9999');
});
var dnode = require('dnode');
var shoe = require('shoe')(
function(stream)
{
var TCPserver = require('net')
.createServer()
.listen(5005, function()
{
console.log('TCP listening 5005');
})
.on('connection', function(socket)
{
console.log('TCPsocket connected');
var d = dnode(
{
});
d.on('remote', function(remote)
{
remote.test();
});
d
.pipe(stream)
.pipe(d);
socket.end();
})
.on('end', function()
{
console.log('TCPsocket disconnected');
});
})
.install(HTTPserver, '/dnode');
client.js
var shoe = require('shoe');
var stream = shoe('/dnode');
var dnode = require('dnode');
var d = dnode(
{
test: function()
{
console.log('hello');
}
});
d.on('remote', function(remote)
{
console.log('connnected');
});
d.pipe(stream)
.pipe(d);
基本上,我想调用从服务器发起的function:test -> hello。
但是,我看到的结果是
d.on('remote', function(remote)
{
console.log('connnected');
});
@客户端被评估。
d.on('remote', function(remote)
{
remote.test();
});
@服务器永远不会被评估。
这是为什么呢?
当然,也许我可以使用 client->server->client 回调方法来解决问题,但如果可能的话,我只想为我未来的工作提供直接的方法。
谢谢。
【问题讨论】:
标签: javascript node.js dnode