如何使用peerjs连接到主机?

Lar*_*ger 5 javascript p2p peer webrtc peerjs

我正在尝试使用peerjs将主机与客户端连接。我有两个文件(一个用于主机,一个用于客户端)。主机将生成客户端用于连接到他的 peerId。它基本上是来自here的教程。

主机.html

const peer = new Peer()

peer.on('open', () => {
  console.log('ID: ' + peer.id)
})

peer.on('connection', (conn) => {
  conn.on('data', (data) => {
    // Will print 'hi!'
    console.log(data)
  })
  conn.on('open', () => {
    conn.send('hello!')
  })
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

客户端.html

const peer = new Peer()

const conn = peer.connect('1781a113-d095-4be5-9969-b80d9c364f6b')
conn.on('open', () => {
  conn.send('hi!')
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

客户端未连接也未发送消息。我尝试使用他们的示例连接到我的主机,这是有效的。我能够向主机发送消息。我的客户有什么问题?

Sul*_*lly 3

文档中有点含糊,但如果您不等待打开事件,则发送到服务器的消息将排队。我不确定是否需要额外的配置来启用排队,但只需等待打开事件就可以在您的情况下工作

const peer = new Peer()

peer.on('open', () => {
    const conn = peer.connect('1781a113-d095-4be5-9969-b80d9c364f6b')
    conn.on('open', () => {
        conn.send('hi!')
    })
})
Run Code Online (Sandbox Code Playgroud)

请记住,每次刷新浏览器时,“主机”中生成的对等 ID 都会发生变化,因此您可能需要选择自己的 ID,而不是随机获取 ID