gpt4 book ai didi

javascript - PeerJs 关闭视频通话未触发关闭事件

转载 作者:行者123 更新时间:2023-12-04 08:39:10 29 4
gpt4 key购买 nike

我正在尝试使用 PeerJs 创建一个单向视频应用程序。我已经成功地能够运行我自己的对等服务器并通过单击按钮进行连接,但是我无法关闭连接,以便对等方可以接收/建立与新对等方的新连接。
每个用户要么是主机要么是客户端,它永远不会倒退。因此,主机可以选择要连接到哪个客户端,客户端将开始将其摄像头反馈流回主机。 closeCon()通过单击按钮调用函数。

    $(document).ready(function(){
peer = new Peer('100001', {host: 'my.url', port: '9900', path: '/peerjs', key: 'peerjs', secure: true, debug: 3});
peer.on("open", function(id) {
console.log("My peer ID is: " + id);
});
video = document.getElementById('vidSrc');
})


function callTheGuy(id){
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
getUserMedia({video: true, audio: false}, function(stream) {
window.call = peer.call(id, stream);
localStream = stream;
window.call.on('stream', function(remoteStream) {
let video = document.getElementById('vidArea');
video.srcObject = remoteStream;
video.play();
$("#videoModal").modal('show')
});
}, function(err) {
console.log('Failed to get local stream' ,err);
});
}

function closeCon(){
window.call.close();
}
这一切都很好,我得到了我的视频源,没问题。这是我的客户端代码:
peer = new Peer(serverId, {
host: "my.url",
port: "9900",
path: "/peerjs",
key: "peerjs",
debug: 3,
secure: true
});

peer.on("open", function(id) {
console.log("My peer ID is: " + id);
});

var getUserMedia =
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
peer.on("call", function(call) {
getUserMedia(
{ video: true, audio: false },
function(stream) {
localStream = stream;
call.answer(stream); // Answer the call with an A/V stream.
},
function(err) {
console.log("Failed to get local stream", err);
}
);
call.on("close", function() {
console.log("closing");
});
});
问题是当我调用 closeCon() 时,客户端文件未接收到关闭事件。的部分
call.on("close", function() {
console.log("closing");
});
永远不会被解雇。我不确定为什么会发生这种情况,但除非关闭事件得到处理,否则客户端将保持与原始主机的连接,并且无法接受来自后续主机请求的连接。有人有建议吗?

最佳答案

2021 年 3 月 7 日更新
我发现这是一个问题,PeerJs 还没有修复。 (问题链接:https://github.com/peers/peerjs/issues/636)
您可以在 Socketio "disconnect"中触发 close 事件以获得解决方法
服务器

socket.on("disconnect", (reason)=>{
socket.broadcast.emit("user-disconnected", userId);
});
客户
socket.on("user-disconnected", (userId)=>{
// remove video or add your code here
});

关于javascript - PeerJs 关闭视频通话未触发关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64651890/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com