首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用node ddp-client从Node插入到流星集合中

使用node ddp-client从Node插入到流星集合中
EN

Stack Overflow用户
提问于 2013-02-01 12:26:02
回答 2查看 4.4K关注 0票数 16

我正在尝试通过node.js将一些系统日志数据流式传输到Meteor集合中。它工作得很好,但是Meteor客户端轮询周期大约10秒对我来说太长了--我希望它是~1秒。

通过控制台的客户端收集插入速度很快,所有客户端都会即时更新,因为它使用的是DDP。但是来自服务器端的直接MongoDB插入受制于客户端的轮询周期。

因此,现在看来,我只能使用DDP从我的节点守护进程插入更新。

在ddp-client包示例中,我能够看到我订阅的消息,但我不知道如何通过DDP和node.js将新的消息发送到Meteor集合,从而一次更新所有客户端...

有什么例子或指导吗?我非常感谢它--作为node和Meteor的新手,我很快就达到了极限。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-14 19:00:32

根据this screencast的说法,可以简单地调用集合声明的meteor-method。在您的示例中,代码将如下所示:

ddpclient.call('/counts/insert', [{hits: 1111}], function(err, result) {
    console.log('called function, result: ' + result);
})
票数 7
EN

Stack Overflow用户

发布于 2013-02-02 04:46:30

好的,在仔细研究了一些代码后,我意识到我完全是想得太多了,所以我让它工作了。协议实际上是非常简单的,RPC之类的东西。

我很高兴地报告,它完全解决了服务器端插入延迟(手动Mongo插入需要几秒钟才能轮询/更新客户端)。

如果你通过DDP,你会得到你对Meteor所了解和喜爱的所有实时(差不多)的好处:)

为了子孙后代,也希望能帮助其他人找到有趣的用例,这里是设置。

用例

我正在将一些自定义syslog数据假脱机到一个node.js守护进程中。然后这个守护进程解析数据并将其插入到Mongo中。我的想法是为我的第一个Meteor实验提出一个基于浏览器的实时报告项目。

所有这些都运行得很好,但是因为我是在 of Meteor proper之外的Mongo 中插入的,所以客户端必须每隔10秒轮询一次。在另一篇@TimDog suggested的帖子中,我在这方面研究了DDP,他的建议看起来非常有效。

我已经在我的系统上测试过了,现在我可以通过node.js异步应用程序即时更新所有流星客户端。

设置调用这里的基本思想是使用DDP“”方法。它接受一个参数列表。在Meteor服务器端,您导出一个Meteor方法来使用它们并执行MongoDB插入。它实际上非常简单:

第1步: npm安装ddp

步骤2:转到您的Meteor服务器代码,在Meteor.methods中执行以下操作:

Meteor.methods({

'push': function(k,v) { // k,v will be passed in from the DDP client.
    console.log("got a push request")
    var d = {};
    d[k] = parseInt(v);
    Counts.insert(d, function(err,result){ // Now, simply use your Collection object to insert.
        if(!err){ 
            return result
            }else{
            return(err)
            }
        });
     }
  });

现在我们需要做的就是使用客户端库从我们的node.js服务器调用这个远程方法。这是一个示例调用,本质上是对example.js调用的直接复制,对我们刚刚导出的新“push”方法进行了一些调整:

ddpclient.call('push', ['hits', '1111'], function(err, result) {
console.log('called function, result: ' + result);
})

运行此代码将通过Meteor服务器插入内容,而Meteor服务器会立即更新连接到我们的客户端:)

我确信我上面的代码并不完美,所以请加入我的建议。我对整个生态系统都很陌生,所以在这里有很多学习的机会。但我真的希望这能帮一些人节省一点时间。现在,回到重点,让我的模板与所有这些实时数据闪耀:)

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14639700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档