【发布时间】:2022-01-06 13:14:50
【问题描述】:
我正在使用 WebRTC 尝试将两个用户连接在一起。我调用 createOffer,然后使用 createOffer 返回的内容设置对等连接的本地描述。我不知道为什么会出现以下错误:
注意:我使用 firebase firestore 作为信号服务器
Uncaught (in promise) DOMException: Cannot set local offer when 尚未调用 createOffer。
这是我的代码:
async function preformSignaling() {
let users = await negDoc.collection("users").get();
let newPeerConnection;
users.forEach(async (doc) => {
if (isNotAlreadyConnected(doc.id)) {
newPeerConnection = new UserConnection(servers, doc.id);
if (doc.id != sessionStorage.getItem("userID") && doc.id != "metadata") {
let connOfferDescription =
await newPeerConnection.userPeerConnection.createOffer();
await newPeerConnection.userPeerConnection.setLocalDescription(
connOfferDescription
);
await doc.collection("offer-candidates").doc("offer").set({
offer: newPeerConnection.userPeerConnection.localDescription,
});
}
peerConnections.push(newPeerConnection);
}
});
}
class UserConnection {
constructor(servers, remoteUserID) {
this.userPeerConnection = new RTCPeerConnection(servers);
this.remoteStream = new MediaStream();
this.remoteUserID = remoteUserID;
}
getRemoteUserID() {
return this.remoteUserID;
}
}
【问题讨论】:
-
您似乎混淆了应用程序的异步部分。例如,当方法没有返回值时,像
await newPeerConnection这样的调用是一个警告标志。 -
@RandyCasburn 但我没有使用这些方法,我仍然遇到同样的问题。
标签: javascript foreach async-await