Можно ли сделать p2p чат используя javascript без сервера? - PullRequest
1 голос
/ 15 апреля 2020

Недавно я был выбран как бэкэнд-лидер для курса обучения. Предполагается, что мы создадим приложение BE для чата, которое позволит пользователям общаться по протоколу p2p без какого-либо серверного кода (я знаю, это означает, что BE отсутствует, но мой профессор не является техническим специалистом). Я спросил его, может ли он использовать webrt c, но ему не понравилась идея использования серверов STUN и TURN. Итак, мой главный вопрос: возможно ли это вообще? Мы говорим о приложении, которое будет работать в браузере, а не напрямую в ОС. И если это так, какие протоколы / API мы можем использовать для достижения этого?

1 Ответ

1 голос
/ 16 апреля 2020

Я не уверен, правильно ли я понял ваш вопрос, поэтому вот некоторые общие сведения:

WebRT C, поскольку P2P API сильно зависит от серверов.

  1. "ICE" :
    Чтобы подключить один узел к другому, узлы должны знать свой IP-адрес для обмена данными. Они могут «запросить» у своей ОС зарегистрированный IP, но это даст только 127.0.0.1 и их локальный сетевой IP. Это работает для соединений на одном и том же компьютере или между компьютерами в одной локальной сети, но не для всех остальных.
    Серверы ICE STUN и TURN необходимы, поскольку клиенты вашего браузера находятся за трансляцией сетевых адресов вашего маршрутизатора (NAT). STUN получает IP-адрес и порт NAT, а TURN передает пакеты в виде известного общедоступного c IP-адреса в случае сбоя STUN.

  2. «Сигнализация» : * 1017 Предположим, что ваши сверстники знают свои собственные достижимые IP-адреса (- вероятно, IP-адрес и порт NAT с использованием STUN и, возможно, даже TURN). Даже ЕСЛИ (!) они знают свой достижимый IP-адрес, они должны сообщить другому Пиру, что этот IP-адрес на самом деле, их IP-адрес и IP-адрес, который используется для связи с ними. Они также должны сообщить другому Пиру некоторую другую техническую информацию, чтобы передача данных работала. Чтобы использовать WebRT C, вам необходим WebSocket-сервер (или комбинация Server-Sent-Events и HTTP Post Messages), который передает эту информацию. После того, как все установлено (они знают свои соответствующие IP-адреса и порты, техническую информацию и т. Д. c.), Вы можете затем отправлять данные через WebRTCs DataChannels.


    Мой совет:
    Не используйте WebRT C для данного варианта использования. Если вы не хотите использовать Backend-сервер, вам нужно искать «serverless» Web-Apps. P2P всегда будет полагаться на какой-либо сервер для запуска соединения. Если вы используете «серверную» архитектуру, кто-то другой размещает сервер / службу чата, которую вы хотите использовать (также называемую «облачной»). Если речь идет о стоимости хостинга для прототипа приложения, вы можете взглянуть на heroku.com, aws .amazon.com, zeit.co, firebase.google.com или других провайдеров хостинга с бесплатными, ограниченными (тестовыми) планами. ,

...