Webrtc 如何在peerjs库中使用AddTransponser?

Webrtc 如何在peerjs库中使用AddTransponser?,webrtc,peerjs,Webrtc,Peerjs,有没有关于如何在peerjs中使用Add收发器的示例代码? 事实上,我正在寻找一种方法,在房间中的同龄人之间创建双向连接,如果这个特定的同龄人选择了共享音频或共享视频按钮,就可以向房间中的所有同龄人共享同龄人的音频或视频。 换句话说,我怎样才能通过使用peerjs库中的AddTransponser来添加或删除连接中的磁道? 有很多关于如何在peerConnection对象上使用AddTransponser的示例,但没有一个与peerjs库相关!在使用AddioSwitter?时,我需要考虑诸如协

有没有关于如何在peerjs中使用Add收发器的示例代码? 事实上,我正在寻找一种方法,在房间中的同龄人之间创建双向连接,如果这个特定的同龄人选择了共享音频或共享视频按钮,就可以向房间中的所有同龄人共享同龄人的音频或视频。 换句话说,我怎样才能通过使用peerjs库中的AddTransponser来添加或删除连接中的磁道? 有很多关于如何在peerConnection对象上使用AddTransponser的示例,但没有一个与peerjs库相关!在使用AddioSwitter?

时,我需要考虑诸如<代码>协商中需要的还是<代码> createOffer <代码>或类似于PERJS库中的一些东西? 客户端代码:


让peers={}//这个房间里所有同龄人的名单
设myId=null;//用于处理对等ID的全局变量
peer.on('open',id=>{
myId=id;//将此客户端的id设置为全局
socket.emit('join-room',room_ID,ID,clientName);//将您的roomId,ID和名称发送到服务器…然后将其发送到其他客户端
});
在('connection',function(conn){
让userId=conn.peer;
assign(peers[userId],{connObj:conn});//将此连接详细信息保存到peers列表(全局对象)
});
socket.on('new-user',(userId,clientName)=>{//当新用户加入房间时
对等方[userId]={name:clientName};
让conn=createConnection(userId);
peers[userId]={name:clientName,connObj:conn};//将此连接详细信息保存到peers列表(全局对象)
});
函数createConnection(userId){
让conn=peer.connect(userId);//使用指定的id连接到peer
return conn;//返回连接对象
}
//当同伴开始共享其视频时,将触发此事件
socket.on('check-ontrack-event',userId=>{
log('cheking audio shre:')
让conn=peers[userId][“connObj”];
设pc=conn.peerConnection;
pc.ontrack=({收发器})=>{
log('newontrack事件激发:)';
控制台.日志(收发器.接收器.轨道);
}
});
让localAudioStream=null;
document.getElementById('audioShare')。addEventListener('click',()=>{
让mic_icon=document.querySelector(“.fa micro”);
如果((localAudioStream!==null)&&&(localAudioStream.getAudioTracks()[0]!==未定义)&&(localAudioStream.getAudioTracks().length>0)){
console.log(“有音轨”);
const tracks=localAudioStream.getTracks();
tracks.forEach(函数(track){
track.stop();
});
localAudioStream.removeTrack(localAudioStream.getAudioTracks()[0]);
麦克风图标。类列表。删除('blue_color');
}else如果((localAudioStream==null)| |(localAudioStream!==null&&localAudioStream.getAudioTracks().length==0)){/+/+++调用块
log(“没有任何音轨”);
navigator.mediaDevices.getUserMedia({
视频:错,
音频:正确
})。然后(音频流=>{
localAudioStream=audioStream;
for(让peerId加入同龄人){
如果(peerId==myId)继续;
让conn=peers[peerId][“connObj”];
设pc=conn.peerConnection;
pc.add收发器(localAudioStream.getTracks()[0],{direction:“sendrecv”});
socket.emit('audio-shared',myId);
}
麦克风图标。类列表。添加('blue_color');
}).catch(错误=>{
console.log('音频获取期间发生错误'+错误);
});
}否则{
log('没什么好说的!');
}
});
服务器端代码:

const fs=require('fs');
const express=require('express');
常量app=express();
const server=require('http')。服务器(应用程序);
const io=require('socket.io')(服务器);
const{v4:uuidV4}=require('uuid');
const{ExpressPeerServer}=require('peer');
const peerServer=ExpressPeerServer(服务器、{
调试:正确
});
.
.
.
io.on('连接',套接字=>{
console.log('user connected');//测试
socket.on('join-room',(roomId、userId、clientName)=>{
socket.join(roomId);
socket.on('audio-shared',userId=>{
socket.to(roomId.emit('check-ontrack-event',userId');
log('id为'+userId+'的用户共享了他的音频');
});
});
});
首先,我使用
peer.connect('remote-peer-id')
方法在每个对等方之间创建了一个连接,并为房间中的每个对等方在peers对象中保存了
connection
对象。之后,我尝试将音频流添加到此
连接
对象的
对等连接
。 但不幸的是,它不起作用

任何暗示都将不胜感激