我试图准确理解我应该在何处/如何实现独立于客户端rpc调用运行的node.js / socketstream服务器端代码。作为一个简单的例子,我试图在服务器端使用类似的东西将常规时钟更新推送到连接的客户端:
var pushTime = function() {
d = new Date();
ss.publish.all('newServerTime', d);
return;
};
setInterval(pushTime, 1000);
设置客户端以订阅该发布事件,如下所示:
ss.event.on('newServerTime', function(time) {
return $('#serverTime').val(time);
});
问题:我在哪里放置/执行服务器端pushTime函数?文档建议使用/ server / rpc树,所以我把它放在/server/rpc/demo.js中,但会产生这个错误:
ReferenceError:未定义ss
请注意,我不是将代码放在export.actions块中;我相信这只适用于客户端rpc调用。
我尝试在文件顶部设置ss:
ss = require('socketstream');
但这是错误的 - 现在'publish.all'方法不存在。
我尝试在ss.start调用之后立即将代码放在app.js的底部。再次说,publish.all方法不存在(可能直到有客户端连接?)。我迷路了。任何帮助赞赏;希望这很清楚。
答案 0 :(得分:1)
是的,你可以把这些代码放在你的行动中,没有什么可以阻止你,但最好将它放在你的'app.js'文件中。
要从app.js(通过/ server / rpc操作文件发送的内容)访问内部API,请使用ss.api
因此您需要致电:
ss.api.publish.all()
来自'app.js'文件。
此前没有记录道歉。我将很快更新文档。
欧文
答案 1 :(得分:0)
不知道它是否符合编码标准,但这可能有效:
<强> /server/rpc/demo.js 强>
exports.actions = function(req, res, ss) {
setTimeout(function () {
ss.publish.all("newServerTime", new Date());
}, 1000);
}
在阅读文档时,我认为您可以滥用几乎所有内容的操作,而不仅仅是RPC响应。