Peerjs: 无法在 macOS 上连接到 Safari 中的对等点

创建于 2019-01-24  ·  11评论  ·  资料来源: peers/peerjs

每当我尝试通过指定 {reliable: true} 选项连接到 Safari 中的对等点时,我都会收到错误消息:
TypeError: Object is not a constructor (evaluating 'new Reliable(this._dc, util.debug)')
image

有没有办法我仍然可以在 Safari 中使用可靠的数据通道?

所有11条评论

抱歉,我没有更新有关 Safari 的信息,我什至无权访问它。 但是这里有些人在 Safari 中使用 PeerJS,让我们等他们。

该错误似乎来自 Reliable 的导出方式。

来源 -> import { Reliable } from "reliable";
通天塔 -> var Reliable = require('reliable');

将编译后的代码更改为以下作品...
this._reliable = new Reliable.Reliable(this._dc, util.debug);

然后negotiator.js缺少Reliable的导入https://github.com/peers/peerjs/blob/master/lib/negotiator.ts#L226 & 280

[错误] 未处理的承诺拒绝:ReferenceError:找不到变量:可靠

编辑:
似乎是修复它的 PR 已打开但从未合并https://github.com/michelle/reliable/pull/18/commits/a797057fe25174cee33f1eb7331b5808bd8a0ff5

不依赖此库的解决此问题的另一种方法是从您的初始化配置中删除reliable: true

哇,我无法访问该仓库。 @tombertrand你有什么推荐? 修复导入或只是删除reliable: true

如果拥有它更好,我将克隆存储库并进行更新。

如果她可以合并此 PR,请尝试向@michelle发送推文和邮件。 只希望她能回应。

我已经尝试过 Safari,修复了Reliable lib 和negotiator.ts引起的 JS 错误。 没有更多错误,但在 Chrome/FF 上没有问题时,一条消息(例如: connection.send('hello'); )不会到达连接。 我最终为支持它的浏览器进行了可靠的连接,而对于不受支持的浏览器则不可靠。

import Peer from 'peerjs';
import Util from 'peerjs/lib/util';

// Host
const peer = new Peer(HOST_PEER_ID, { secure: true, debug: 3 });

// Guests
const guestPeer = new Peer(null, { secure: true, debug: 3 });
const guestConnection = guestPeer.connect(HOST_PEER_ID, {
  reliable: Util.supports.reliable, // true / false depending if the browser supports reliable connection
});

我已经联系到@michelle ,她将 PR 合并到了可靠的 repo 中。 @tombertrand 也是一个很好的解决方法。 但是看到可靠的连接无法在 Safari 上运行仍然令人难过 :(

它应该可以正常工作,因为 package.json 使用来自 repo 的最新主版本。

好的,因为“可靠”部分得到修复,当我尝试从 Safari 12 连接到对等方时,我仍然看到这个:
image

谁能建议这里有什么问题? 谢谢。

PS 我注意到 peerjs 使用了一个过时的 webrtc-adapter 包版本。 也许这就是为什么我们经常不同步集成的原因。 只是一个假设。
PPS 我已经分叉了 peerjs,将其更改为使用最新的 webrtc-adapter 库,但在尝试建立连接时我仍然在 Safari 中遇到相同的错误。

我能够将问题追溯到这一点。 一旦新的 t.RTCPeerConnection 被一系列 iceServers 调用,它会在本地代码内部失败。
Screen Shot 2019-03-21 at 8 30 46 AM

事实证明,问题与错误所暗示的完全一样。 我传入的是 url 数组而不是 urls 以及包含 stun 服务器的 url 的实际字符串数组。 毕竟是我的错。

这与#574有任何关系吗? 我尝试使用野生动物园。 如果 Safari 是主机,它会静默失败。 如果我尝试将另一个浏览器(例如 Chrome)连接到 Safari,我会收到错误消息

Unhandled Promise Rejection: TypeError: Argument 1 ('options') to RTCPeerConnection.createOffer must be a dictionary

peer.min.js 中的peer.min.js i.createOffer(function(e) {似乎有问题

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