Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Socket.io和简单对等无效信号数据(如何通过简单对等远程连接)_Reactjs_Express_Socket.io_Simple Peer - Fatal编程技术网

Reactjs Socket.io和简单对等无效信号数据(如何通过简单对等远程连接)

Reactjs Socket.io和简单对等无效信号数据(如何通过简单对等远程连接),reactjs,express,socket.io,simple-peer,Reactjs,Express,Socket.io,Simple Peer,我正在尝试远程连接两个浏览器。据我所知,我需要使用socket.io(或类似)来启动两个浏览器之间的连接,然后webRTC将处理两个客户端之间的连接 我使用的是ReactJS、Express、Socket.io和simplepeer 我已经有了一个功能,可以创建最多2人的房间(1对1) 一旦会议室启动,两名参与者已经通过socket.io连接,我就需要连接他们的视频流 逻辑: 选择发起人(room.particpants[0])发送报价 每次有人加入时,io.emit将发送到房间内所有新更新的

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

我使用的是ReactJS、Express、Socket.io和simplepeer

我已经有了一个功能,可以创建最多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之外的所有客户机发送带有数据的offer消息

  • 只有客户端2通过
    socket.on('offer')

  • 使用简单对等点创建新对等点

  • 据我所知,client.signal从master接收信号数据,因此它可以接受它的流

这会导致客户端2崩溃,说client.signal()正在获取无效数据

  • 尽管如此,master.on(“信号”)仍然收到来自客户2的报价
我如何接受这个提议,我的连接有什么问题?在使用socket.io在客户端1和客户端2之间建立webRTC连接以“介绍”这两个客户端的过程中,我遇到了困难