В этой статье я расскажу о создании чат-клиента WebRTC с использованием React. В этой статье используется схема взаимодействия, описанная в этом блоге, и взаимодействие с сигнальным сервером, описанное в этом блоге.

Постановка задачи

  • Приложение WebRTC Chat с использованием React,
  • Используя сигнальный сервер, как описано в этом блоге,

Решение высокого уровня

Решение высокого уровня состоит в том, чтобы реализовать сигнальный поток, как описано в этом блоге. Ниже приведен рисунок еще раз для вашего удобства:

Как мы видим, для этого WebRTC Chat Client мы должны реализовать несколько пунктов:

  • Открытие соединения через веб-сокет и первоначальный вход в систему,
  • Обработать сообщение, полученное через веб-сокет,
  • Обработать сообщение ICE.

Запуск веб-сокета и первоначальный вход

Начнем с открытия соединения через веб-сокет. После этого обработайте событие onOpen, чтобы отправить начальное сообщение о входе в систему.

Обработка сообщения, полученного через веб-сокет

У нас есть несколько типов сообщений, полученных через наш веб-клиент:

  • Новый участник, когда мы получаем это сообщение, нам нужно отправить сообщение с предложением через сервер веб-сокетов,
  • UserID, когда мы получаем это сообщение, нам нужно отправить сообщение «NewMember» на сервер веб-сокета,
  • Сообщение ICE, когда мы получаем это сообщение, нам нужно добавить его в качестве кандидата ICE в одноранговое соединение с другим пользователем,
  • Ответьте, когда мы получим это сообщение, нам нужно установить удаленное описание для нашего однорангового соединения с другим пользователем,
  • Предложение, когда мы получим это сообщение, нам нужно отправить сообщение «Ответ» через сервер веб-сокетов. Нам также нужно добавить соединение в наше локальное описание нашего однорангового соединения с другим пользователем,

Обработать сообщение ICE

Сообщение ICE Candidate отправляется сервером STUN/TURN, чтобы помочь нам пройти через NAT. Каждый раз, когда мы получаем это сообщение от сервера STUN/TURN, нам нужно снова отправить его на сервер websocket/signaling. Оттуда сигнальный сервер перенаправит его другим сторонам, чтобы другие стороны могли узнать наш адрес и то, как установить с нами p2p-соединение.

Полный код

Полный код WebRTC Chat React можно найти на этом github. Пожалуйста, не забудьте поставить звездочку на этот репозиторий github. Вы также можете попробовать работающий сайт в здесь. Пожалуйста, также ознакомьтесь с другой ссылкой в ​​разделе ссылок, чтобы получить полное представление обо всем решении. Пожалуйста, оставьте комментарий, если у вас есть дополнительные вопросы или запросы.

Ссылки

  1. https://github.com/rsatrio/React-WebRTC-чат
  2. https://medium.com/javarevisited/webrtc-signaling-server-example-using-spring-boot-efd5f067900a
  3. https://mrizkysatrio.medium.com/webrtc-chat-application-772539ae97b7
  4. https://glowing-creponne-b62856.netlify.app/