Meteor方法-来自服务器的流/产量数据

Meteor方法-来自服务器的流/产量数据,meteor,ecmascript-6,stream,generator,Meteor,Ecmascript 6,Stream,Generator,我正在编写一个Meteor应用程序,它允许客户端在服务器上点击按钮执行终端命令 我知道如何使用单个命令执行此操作: //server Meteor.methods({ exec : cmd => { ... } }) //client Meteor.call('exec', cmd, (err, result) => { console.log(result) }) 但是现在我正在尝试实现一个更复杂的协议,不知道最好的方法是什么。我希望客户端启动一系列命令,让服务器运行它

我正在编写一个Meteor应用程序,它允许客户端在服务器上点击按钮执行终端命令

我知道如何使用单个命令执行此操作:

//server
Meteor.methods({ exec : cmd => { ... } })

//client
Meteor.call('exec', cmd, (err, result) => {
    console.log(result)
})
但是现在我正在尝试实现一个更复杂的协议,不知道最好的方法是什么。我希望客户端启动一系列命令,让服务器运行它们,并逐步告诉我它们是成功还是失败

显然,我可以用上面的代码实现这一点,方法是编写客户端代码,用第一个命令运行
exec
,检查服务器的结果,用下一个命令运行
exec
,等等

关键是在我的例子中,一系列命令总是相同的,因此在客户端上只执行一个
Meteor.call
会更有意义——服务器将知道要运行哪些命令。但是,我还希望在客户端上提供单个命令的结果,因为
Meteor.call
当然只返回一次


我要寻找的是一种流或迭代器,通过它我可以向客户端发送大量消息,直到所有事情都完成。我见过一些过时的软件包,叫做
meteor streams
和类似的软件包,它们可能可以做类似的事情,但我认为meteor本身一定有一种聪明的方法来解决这个问题。想法?

常见的解决方案是收集
通知。使用以下架构创建集合:
for:${userid},msg:${msg string},键入:${err success etc}
。创建通知发布,该发布使用用户
userid
发布文档

然后,您可以在客户端的某个主模板页面中订阅
通知
集合。使用
observeChanges
查找对集合的更改,并将其记录到console.log中,使用JavaScript在页面上显示这些更改,或者只需安装一个类似
sAlerts
的包来处理这些更改

在observe changes回调中,应该调用一个
seenNotification
方法,该方法从数据库中删除通知,因此不再显示该通知


稍后我将发布代码片段。

常见的解决方案是
通知
集合。使用以下架构创建集合:
for:${userid},msg:${msg string},键入:${err success etc}
。创建通知发布,该发布使用用户
userid
发布文档

然后,您可以在客户端的某个主模板页面中订阅
通知
集合。使用
observeChanges
查找对集合的更改,并将其记录到console.log中,使用JavaScript在页面上显示这些更改,或者只需安装一个类似
sAlerts
的包来处理这些更改

在observe changes回调中,应该调用一个
seenNotification
方法,该方法从数据库中删除通知,因此不再显示该通知

稍后我将发布代码片段。

看一下:

我想它会很容易解决你的问题。

看看这个:


我想这会很容易地解决你的问题。

我在想这样的事情是最好的办法。谢谢你的详细解释!我会接受,除非有人提出一种完全不涉及数据库的方法——我对此表示怀疑。我在想这样的方法是可行的。谢谢你的详细解释!我会接受,除非有人提出一种完全不涉及数据库的方法——我对此表示怀疑。谢谢,这绝对可以满足我的所有要求,但我想我更喜欢Seb Morris描述的原生Meteor解决方案。谢谢,这绝对可以满足我的所有要求,但我想我更喜欢塞布·莫里斯描述的本土流星解决方案。