【问题标题】:Socketstream(0.3) server-side code confusionSocketstream(0.3) 服务器端代码混乱
【发布时间】:2012-03-26 09:31:41
【问题描述】:

我试图准确了解应该在哪里/如何实现独立于客户端 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 方法不存在(可能直到连接了客户端?)。我迷路了。任何帮助表示赞赏;希望这很清楚。

【问题讨论】:

    标签: javascript node.js socketstream


    【解决方案1】:

    是的,您可以将该代码放入您的操作中,没有什么可以阻止您,但最好将其放入您的“app.js”文件中。

    要从 app.js(发送到 /server/rpc 操作文件的那个)访问内部 API,请使用 ss.api

    因此您需要致电:

    ss.api.publish.all()
    

    来自您的“app.js”文件。

    抱歉,之前没有记录。我会尽快更新文档。

    欧文

    【讨论】:

    • 感谢 Owen - 感谢 socketstream。我希望答案是这样的。一个可能不恰当的后续行动——我想我会用咖啡脚本处理这个项目。 app.js 显然存在于 ss csjs 链接/编译生态系统之外。建议的工作流程?我应该在服务器 api 树中构建另一个模块并以某种方式需要它吗?
    • 嘿,杰拉布里。当然你可以这样做(我愿意),或者将 app.js 更改为 app.coffee 并使用“coffee app.coffee”启动你的应用程序。我个人更喜欢第一个选项。
    【解决方案2】:

    不知道它是否符合编码标准,但这可能有效:

    /server/rpc/demo.js

    exports.actions = function(req, res, ss) {
        setTimeout(function () {
            ss.publish.all("newServerTime", new Date());
        }, 1000);
    }
    

    在阅读文档时,我认为您可以对几乎所有内容滥用操作,而不仅仅是 RPC 响应。

    【讨论】:

    • 谢谢 Jan。这是表达我提出的测试用例的一种(更)简洁的方式。它仍然让我想知道 SS 生态系统中服务器端代码的“正确”主页和执行路径,这是我真正关心的问题,因为我需要独立于客户端运行相当多的游戏时间和逻辑。 . .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2013-05-27
    • 2015-11-25
    • 2013-04-10
    • 2011-02-07
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多