Socket.io和Simple-Peer无效信号数据如何通过简单对等方远程连接

问题描述

我正在尝试远程连接两个浏览器。据我了解,我需要使用socket.io(或类似工具)来启动两个浏览器之间的连接,然后webRTC将处理两个客户端之间的连接。

我正在使用ReactJS,Express,Socket.io和简单对等。

我已经有一个功能,现在可以创建最多2人的房间(1对1)。

启动会议室后,已经通过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 (将#修改为@)