我正在尝试准确地理解我应该在哪里/如何实现独立于客户端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‘方法不存在了。
我试着把代码放在app.js的底部,就在ss.start调用之后。这再次说明publish.all方法并不存在(也许直到附加了客户端之后才存在?)。我迷路了。感谢任何帮助;希望这一点是明确的。
发布于 2012-03-26 20:49:25
是的,你可以把这些代码放在你的操作中,没有什么能阻止你,但最好是把它放在你的'app.js‘文件中。
要从app.js (发送到/server/rpc操作文件)访问内部API,请使用ss.api
因此,您需要调用:
ss.api.publish.all()从你的'app.js‘文件中。
抱歉,这之前没有被记录下来。我将很快更新文档。
欧文
发布于 2012-03-26 20:27:07
不知道它是否符合编码标准,但这可能是可行的:
/server/rpc/demo.js
exports.actions = function(req, res, ss) {
setTimeout(function () {
ss.publish.all("newServerTime", new Date());
}, 1000);
}在阅读文档时,我认为您可以将操作滥用到几乎所有事情上,而不仅仅是RPC响应。
https://stackoverflow.com/questions/9869694
复制相似问题