Я разрабатываю серверную часть, которая предоставляет REST API для клиента PWA. Приложение PWA имеет функции для обмена текстовыми сообщениями в режиме реального времени и голосовых вызовов. Я изучал WebRT C в течение последних двух дней, и сейчас мне кажется, что это именно то, что мне нужно.
После некоторого исследования я сузил следующие результаты, которые мне нужны для работающей службы обмена текстовыми сообщениями и голосовых вызовов в реальном времени:
- Внедрение сервера сигналов для инициирования обнаружения одноранговых узлов и рукопожатия. Из примеров в Интернете я понял, что мне нужен протокол сигнализации (поскольку протокол не определен спецификациями WebRT C). Мои исследования показывают, что простой протокол может быть разработан с помощью Websockets и путем реализации некоторых базовых c сигналов, как показано здесь .
- Реализация сервера STUN / TURN. Теперь я знаю, что это разные вещи и не взаимозаменяемы. Насколько я понимаю, STUN может охватывать большинство случаев использования, за исключением клиента за брандмауэром и NAT. Я посмотрел на один nodejs пакет, node-turn , но он не выглядит как активно поддерживаемый пакет. Другие варианты, которые я нашел, были coturn , который выглядит надежным, но не поддерживает мою среду развертывания (см. Ниже).
Я довольно уверен, что могу легко реализовать (1) из образцов в Интернете и некоторых проб и ошибок. Для (2) я не уверен, какой подход должен быть наиболее логичным. Причиной сложности является отчасти потому, что я запускаю API в качестве HTTP-триггера для облачной функции. Это несколько лишает возможности использования coturn, устанавливая его поверх S SH. Мое исследование также показывает, что это будет "геркулесовая" задача - реализовать сервер TURN с нуля (но, похоже, у меня нет других вариантов).
Будем весьма благодарны за любые предложения относительно альтернативного подхода или ресурсов для начала работы с внедрением сервера TURN. Кроме того, пожалуйста, не стесняйтесь поправлять меня, если я ошибся здесь. Спасибо всем за ваше время и помощь.