Как подключиться к хосту с помощью peerjs?

#javascript #webrtc #p2p #peerjs #peer

Вопрос:

Я пытаюсь использовать peerjs для подключения хоста к клиенту. У меня есть два файла (один для хоста, один для клиента). Хост сгенерирует peerID, который клиент использует для подключения к нему. Это в основном учебник отсюда.

host.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!')
  })
}) 
 <script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script> 

client.html

 const peer = new Peer()

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

Клиент не подключается и не отправляет сообщения. Я попытался использовать их пример для подключения к моему хосту, и это сработало. Я смог отправлять сообщения хосту. В чем проблема с моим клиентом?

Комментарии:

1. Вы получаете ошибки?

2. Нет, ничего. Ни какой-либо сигнал, он не работает.

Ответ №1:

В документации это немного расплывчато, но если вы не дождетесь события открытия, сообщения на сервер будут поставлены в очередь. Я не уверен, нужна ли дополнительная конфигурация для включения очереди, но в вашем случае должно сработать простое ожидание события открытия

 const peer = new Peer()

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

Имейте в виду, что идентификатор однорангового узла, сгенерированный на вашем «хосте», будет меняться каждый раз при обновлении браузера, поэтому вы можете выбрать свой собственный идентификатор вместо случайного

Комментарии:

1. Большое спасибо! Это решило мою проблему. (Я не понял этого из документов) Спасибо!