问题描述
我正在尝试远程连接两个浏览器。据我了解,我需要使用socket.io(或类似工具)来启动两个浏览器之间的连接,然后webRTC将处理两个客户端之间的连接。
我正在使用ReactJS,Express,Socket.io和简单对等。
启动会议室后,已经通过socket.io连接了两个参与者,那么我需要连接他们的视频流。
逻辑:
- 选择发起方(room.particpants [0])发送报价
- 每次有人加入时,io.emit到房间中所有新近更新的参与者列表中
- 连接同行
server.js
socket.on('send-offers',data => {
participants = data.participants
let initiator = participants[0]
// Send to everyone but the initiator (2cnd participant for Now)
io.to(participants[1]).emit('offer',data)
})
client.js
socket.on('joined',async data => {
console.log(`Someone has joined the room`)
// Have the initial connector send out the offer signal
if (socket.id === data.participants[0]) {
let master = await new Peer({ initiator: true,trickle: false })
let payload = { participants: data.participants,signal: master }
socket.emit('send-offers',payload)
master.on('signal',data => {
console.log('master received signal')
console.log(data)
})
}
})
socket.on('offer',data => {
console.log('peer socket io message received')
let client = new Peer()
client.signal(data.signal)
})
这个想法是,当客户端1(发起者)和客户端2(客户端)通过socket.io相互连接时,它们必须随后连接视频流数据。
-
客户端1将套接字消息发送到服务器以发送报价。它通过
master
作为信号字段。 -
节点接收到此消息,并将包含数据的要约消息发送给客户端1以外的所有客户端。
-
只有客户端2通过
socket.on('offer')
接收报价 -
使用简单对等方创建新的对等方
-
据我了解,client.signal从master接收信号数据,因此它可以接受它的流。
这会导致客户端2崩溃,提示client.signal()正在获取无效数据
-
尽管客户端2发出了报价,但
- master.on('signal')仍然收到信号
我如何接受此优惠,我的联系有什么错?我很难遵循使用socket.io在“客户端”中引入两个客户端来在客户端1和客户端2之间建立webRTC连接之间的流程。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)