Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
Webrtc and socket.io: createanswer() always has an error. Why?. My code connects two peers, but only one of them knows about it?
我正在使用socket.io并在node.js.上服务
这是来自客户端的代码:
getUserMedia(constraints, handlemedia, error);
function handlemedia(stream) {
localStream = stream;
attachMediaStream(localVideo, stream);
socket = io.connect();
document.getElementById("connect").addEventListener("click", function(e){
remoteVideo = document.getElementById("remoteVideo");
console.log("We know what socket is.", socket);
servers = {"iceServers": [{ "url": "stun:stun.l.google.com:19302"}]};
pc = new RTCPeerConnection(servers);
pc.onicecandidate = console.log("GOT CANDIDATE");
pc.addStream(localStream);
pc.onaddstream = function(event)
{
attachMediaStream(remoteVideo, event.stream);
}
function error()
{
console.log("An error occurred in the create offer section. ");
}
sdpconstraints = {'mandatory': {
'OfferToReceiveVideo':true }};
pc.createOffer(function(sessiondesc)
{
console.log("Socket attemp 2: ", socket);
pc.setLocalDescription(sessiondesc);
console.log("Offer: ", sessiondesc);
console.log("local description was set. Don't worry.");
socket.emit("sessiondesc", sessiondesc);
}, error, sdpconstraints);
socket.on("sessiondesc", function(sessiondesc)
{
console.log("WE GOT THE FUNCTION ");
sdpconstraints = {'mandatory': {
'OfferToReceiveVideo':true }};
console.log("Your partner created an offer for you.");
pc.createAnswer(function(sessiondesc)
{
console.log("Socket attemp at create answer section: ", socket);
pc.setLocalDescription(sessiondesc);
console.log("Session description: ", sessiondesc);
console.log("Local desc for create answer section was set.");
socket.emit("sessiondesc", sessiondesc);
}, console.log("Error in create answer section occurred."), sdpconstraints);
});
}
}
这是服务器代码,使用node.js和socket.io:
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket, webkitRTCPeerConnection, client, id){
socket.on("sessiondesc", function(sessiondesc)
{
console.log("Emitting session desc RIGHT NOW");
socket.broadcast.emit("sessiondesc", sessiondesc);
});
});
因此,我在浏览器中打开两个选项卡,在两个选项卡上转到localhost,并确保打开控制台以查看日志。
然后我点击第一个选项卡上的连接。它显示登录到"本地描述集,不用担心",但它没有显示"我们有功能"的东西,这是有道理的,因为我还没有在另一个选项卡上连接。
所以我转到另一个选项卡,然后单击"连接"。现在,在第二个选项卡上,它只显示本地描述集之前的内容,不用担心。很明显,第二个选项卡没有从第一个选项卡接收到任何内容!为什么?
但当我回到第一个标签时,它确实收到了一些东西!它通过了我代码中的"我们得到了函数"部分。然后它会说"你的伴侣为你创造了一个报价"但问题是,它说的下一件事是"创建答案部分出错",所以在createanswer中出现了错误!为什么会这样?它为什么称这个错误?
它也不会在任何选项卡上显示任何远程视频。
我已经能够识别出代码中的几个问题。。。
- 只有在用户单击连接按钮后,才能从套接字处理
sessiondesc
,所以当tab1发出该消息时,tab2不会捕捉到它 - 第二,当tab2发送offer而tab1试图添加它时,它的peerConnection已经创建了offer,因此无法创建应答(这部分是我的假设,peerConnection只能创建offer或创建应答。)
相关文章:
- 如何使用offer/answer交换来自两个对等连接的流
- 在Qualtrics中,介绍如何动态连接两个滑块
- 如何添加两个变量而不使其在javascript中连接
- 如何在Javascript中连接两个结构不同的对象
- 连接流星中的两个收藏(帖子评论)
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 使用包含过滤器在环回中连接两个模型
- 如何使用 href 连接两个参数
- 如何完成此循环?连接前面的两个字符
- '对象不是函数'当使用angular连接两个json数组时
- 使用WebRTC对等连接进行两个以上参与者的视频会议是否可行
- 尝试连接Angular.js或JavaScript中的两个函数返回
- Javascript-如何连接单词脚本的两个大写首字母
- 连接两个变量
- 如何在同一个网页上创建两个连接列表
- 制作两个连接的选择字段非常丑陋,我做错了什么
- 给定两个连接的可排序 JQuery 列表,我怎么知道元素被放在哪个容器上
- Javascript:每个客户端有两个连接
- 如何在两个连接之间同步数据
- 同一个应用程序中与mongoose的两个连接.第二个连接是连接第一个依赖项