В чем разница между WebRTC и WebSockets для низкоуровневой передачи данных



Я пытаюсь понять разницу между WebRTC и WebSockets, чтобы лучше понять, какой сценарий требует чего. Мне любопытна широкая идея двух сторон (в основном веб-приложений, но потенциально одна из них является выделенным серверным приложением), говорящих друг с другом.



Предположение:




  • очевидно, что в отношении ad-hoc сетей WebRTC выигрывает, поскольку он изначально поддерживает протокол/метод ICE.


Вопросы:




  • относительно прямого связь между двумя известными сторонами в браузере, если я не полагаюсь на отправку мультимедийных данных, и я заинтересован только в отправке целочисленных данных, дает ли WebRTC мне какие-либо преимущества перед webSockets, кроме шифрования данных?

  • Что касается выделенного сервера, говорящего с клиентом на основе браузера, какая платформа дает мне преимущество? Мне нужно было бы закодировать сервер WebRTC (возможно ли это из браузера?), или мне нужно было бы закодировать сервер WebSocket (быстрый поиск google заставляет меня думать это возможно).

527   3  

3 ответов:

WebRTC определяет транспорт носителей через RTP .. который может работать P2P при определенных обстоятельствах. В любом случае, чтобы установить сеанс webRTC, вам также понадобится протокол сигнализации .. и для этого WebSocket является вероятным выбором. Другими словами: если вы не хотите транслировать медиа в реальном времени, WebSocket, вероятно, лучше подходит.

Есть одно существенное отличие: Websockets работает через TCP, WebRTC-через UDP. На самом деле WebRTC-это протокол SRTP с некоторыми дополнительными функциями, такими как STUN, ICE, DTLS и т. д., а также внутренними функциями VoIP, такими как Adaptive Jitter Buffer, AEC, AGC и т. д.

Итак, Websocket предназначен для надежной связи. Это хороший выбор, если вы хотите отправить любые данные, которые должны быть отправлены надежно.

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

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

Вопрос 1: Да. Часть канала данных WebRTC дает вам преимущества в этом случае, потому что она позволяет вам создать одноранговый канал между браузерами для отправки и получения любых необработанных данных, которые вы хотите. Websockets заставляет вас использовать сервер для подключения обеих сторон.

Вопрос 2 Как я уже говорил в предыдущем ответе, Websockets лучше, если вы хотите установить связь между сервером и клиентом, и для этого существует множество реализаций (например, jWebSocket). Добавить поддержка на сервере для установления соединения с каналом данных WebRTC может потребоваться несколько дней жизни и здоровья. :)

Comments

    Ничего не найдено.