Peerjs: 连接后

创建于 2019-06-25  ·  7评论  ·  资料来源: peers/peerjs

首先:我对javascript中事件时间的了解很差,所以如果我的问题看起来很明显,请接受我的歉意(如果我用问题轰炸你,对不起)。

当对等点 A 通过DataConnection.on('connection', function() {...})处理另一个对等点 B 的连接时,该连接是否在处理程序内部准备好,或者在事件处理程序返回后它是否变得完全可用? 我的意思是:A 可以像这段代码一样向 B 发送数据消息吗?

peerA.on('connection', function(c) {
    // do something
    c.send("Welcome! (will this message ever got delivered?)");
    // do something else
});

如果这是不可能的,那么有一个“连接后”事件来处理这些情况不是很好吗? 或者也许下面的代码可以工作?

peerA.on('connection', function(c) {
    // do something
    setTimeout(function() {
        c.send("Welcome! (will this message ever got delivered?)");
    }, 0);
});

谢谢你。

最有用的评论

  1. 是否可以使用 v1 中的元数据功能来区分谁在连接?

是的! 我刚刚将该功能添加到计划中,应该很容易实现

  1. 我能否访问远程和本地流以通过 AudioContext 进行一些(本地)音频处理? 在我的项目中,我的同伴 A 需要在耳机的 L 通道中听到梨 B,在 R 通道中听到 C,并独立改变每个人的音量; B 和 C 都需要一个连接到他们的麦克风的 vu-meter 来持续监控它是否工作正常(我已经部分地实现了这个功能并且需要保留它们)。

您已经可以访问处理程序上的流。 它没有很好的文档记录,但是正如您所说,每个对等方都会收到一个远程流,而您自己的远程流一次,现在可用于所有连接,如果需要,将来可能会更改。

您的意思是在发送流之前处理它们吗? 如果是这样,它也可以实施。

  1. 我没有测试过数据通道,但我想它与媒体通道相同:每个对等点之间的 1-1 连接,每个连接都触发 onDataStream? 并且消息将单独发送给每个对等方?

是的,您会收到原始数据通道,每个连接的对等点一个。 它也适用于上述元数据功能。

  1. 很高兴听到不需要对等服务器。 但是,那个wss://broker.peerjs.com是干什么用的?

PeerJS 需要一个通道来执行初始信号。 但现在不再使用 PeerServer,所有逻辑都由 PeerJS 库自己完成,并且只需要一个 MQTT 代理。 所以你仍然需要一个服务器,但是 MQTT 是一个标准协议,所以你只需要设置一个代理,也不需要数据库或任何东西都保存在服务器内存中(如 v1 中),因此它是完全可扩展的。

所有7条评论

它已准备好在处理程序中使用。 我发现“开始连接”事件不是很有用。 在什么情况下你觉得它有用?

在我正在开发的项目中,一个问题是避免不必要的连接。

共有三个角色:学生、演讲者、教师(我在注册对等点时添加了一个元数据标志,指示选项数组中的角色)。 教师使用他的已知 ID 连接到服务器,并等待演讲者和学生。 一旦它们都连接好,就必须避免进一步的连接。
您在 v2.0.0 中实现的拒绝应该可以完成这项工作,但在我看来,API 中的更改非常激进。

是的,新版本是市长版本(破坏性,没有向后兼容性)。 旧的 API 相当混乱,而且从 2013 年的第一天开始,代码就有很多遗留的技巧,很难维护。

但由于这是一个突破性的变化,我会继续支持旧版本,所以我会在 v1 中实现一些拒绝的方式。 无论如何,如果您不需要支持非常旧的浏览器,我建议您迁移到 v2。 您将获得稳定性,并且不需要托管 PeerServer。

v2 中的拒绝尚未完成,但我专注于 v2 开发,因此该功能将很快准备就绪。

我查看了您为 v2 提供的示例,它看起来确实令人印象深刻:几行代码中的简单一对一聊天! 此外,我已经对代码进行了一些调整,并且我看到每当有人加入房间时,每个对等点都会触发 onRemoteStream,从而可以处理您的带宽可能支持的所有媒体连接:哇!!!

只是几个问题:

  1. 是否可以使用 v1 中的元数据功能来区分谁在连接?
  2. 我能否访问远程和本地流以通过 AudioContext 进行一些(本地)音频处理? 在我的项目中,我的同伴 A 需要在耳机的 L 通道中听到梨 B,在 R 通道中听到 C,并独立改变每个人的音量; B 和 C 都需要一个连接到他们的麦克风的 vu-meter 来持续监控它是否工作正常(我已经部分地实现了这个功能并且需要保留它们)。
  3. 我没有测试过数据通道,但我想它与媒体通道相同:每个对等点之间的 1-1 连接,每个连接都触发 onDataStream? 并且消息将单独发送给每个对等方?
  4. 很高兴听到不需要对等服务器。 但是,那个wss://broker.peerjs.com是干什么用的?

PS 我看到你已经更新了路线图,计划为每个房间添加最大数量的对等点,这是我真正需要的!

  1. 是否可以使用 v1 中的元数据功能来区分谁在连接?

是的! 我刚刚将该功能添加到计划中,应该很容易实现

  1. 我能否访问远程和本地流以通过 AudioContext 进行一些(本地)音频处理? 在我的项目中,我的同伴 A 需要在耳机的 L 通道中听到梨 B,在 R 通道中听到 C,并独立改变每个人的音量; B 和 C 都需要一个连接到他们的麦克风的 vu-meter 来持续监控它是否工作正常(我已经部分地实现了这个功能并且需要保留它们)。

您已经可以访问处理程序上的流。 它没有很好的文档记录,但是正如您所说,每个对等方都会收到一个远程流,而您自己的远程流一次,现在可用于所有连接,如果需要,将来可能会更改。

您的意思是在发送流之前处理它们吗? 如果是这样,它也可以实施。

  1. 我没有测试过数据通道,但我想它与媒体通道相同:每个对等点之间的 1-1 连接,每个连接都触发 onDataStream? 并且消息将单独发送给每个对等方?

是的,您会收到原始数据通道,每个连接的对等点一个。 它也适用于上述元数据功能。

  1. 很高兴听到不需要对等服务器。 但是,那个wss://broker.peerjs.com是干什么用的?

PeerJS 需要一个通道来执行初始信号。 但现在不再使用 PeerServer,所有逻辑都由 PeerJS 库自己完成,并且只需要一个 MQTT 代理。 所以你仍然需要一个服务器,但是 MQTT 是一个标准协议,所以你只需要设置一个代理,也不需要数据库或任何东西都保存在服务器内存中(如 v1 中),因此它是完全可扩展的。

好消息! 我想我肯定会从 v1 切换到 v2。 这将使一切变得容易得多。 非常感谢!

感谢惊人的图书馆

此页面是否有帮助?
0 / 5 - 0 等级