【问题标题】:Playing soundcloud stream on multiple clients with meteor使用流星在多个客户端上播放 soundcloud 流
【发布时间】:2015-09-07 20:14:05
【问题描述】:

我正在尝试创建一个协作点唱机作为学习 Meteor 的一个小项目,所以对于这个非常高级的菜鸟问题表示歉意。

我需要能够在多个客户端上调用 soundcloud SC.stream(请参阅 https://developers.soundcloud.com/docs/api/sdks#streaming)函数。所有客户正在查看的模板都绑定到一个看起来像这样的对象:

room: {
 title: "roomname"
 currentlyPlaying: { 
  trackName: "track name"
  trackStreamURL: "http://soundcloud/12345"
 }
}

我似乎无法找到一种方法,以便当客户(例如管理员)设置新的currentlyPlaying 以触发所有客户运行SC.stream 并开始新歌曲。

我只是不确定在这种情况下要使用什么正确的流星功能,所以我不是在寻找代码解决方案,只是在正确的方向上寻找一个点。

提前致谢。

【问题讨论】:

  • 什么是 SC.stream?这段代码来自哪里?
  • 对不起,重新阅读并意识到它是模棱两可的。它来自 Soundcloud API developers.soundcloud.com/docs/api/sdks#streaming
  • 首先弄清楚如何播放一首歌曲。然后要在管理员更改当前播放的歌曲时更改它,您应该在自动运行上下文中使用反应变量,该变量将在歌曲的 url 更改时重新运行
  • 太棒了@EliezerSteinbock 谢谢!我让它在实际启动 url 更改的客户端上工作,只需使用像 click .song 这样的事件。所以对于每个其他客户,我应该使用类似docs.meteor.com/#/full/tracker_autorundocs.meteor.com/#/full/reactivevar 的东西吗?
  • 我认为您需要将数据存储在集合中。我认为这里不需要 ReactiveVar,但这是正确的想法。在下面发布了完整的答案。

标签: meteor


【解决方案1】:

将当前播放的 url 保存在集合中的文档中。然后在客户端上使用cursor.observe()cursor.observeChanges() 来观看包含url 的文档。在块中的 Tracker.autorun 内执行此操作。

当 url 改变时,停止播放上一首曲子并开始播放新曲子。

请参阅此处以获取有关 cursor.observe() 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多