Возможно ли использовать в веб-приложении обычные сокеты (не WebSockets)?

Iceman

Сервер для видеотрансляций должен работать как с клиентами на C++ по обычным сокетам, так и с запросами из браузера. Смотрел в сторону веб-сокетов - оказались слишком замороченные. Найденные в сети функции кодирования/декодирования сообщений websocket то нормально обработают присланные из браузера данные, то выдадут какую-то мешанину. Нет стабильности.

Нужно иметь возможность просматривать в браузере до 20 веб-камер одновременно, на одной странице, или камеру + экран. Кадры передаются от клиентов на C++ в формате jpeg. Также между клиентом и наблюдателем передаётся дополнительная информация - например, id и имя пользователя, доступна ли камера для трансляции, перевёрнуто ли изображение с камеры, транслировать ли данному клиенту вообще или нет.

ВОПРОС:

Есть ли возможность использовать в веб-приложении обычные сокеты? Любым способом - flash, модули какие-нибудь на pyton или чём угодно, лишь бы обеспечить быстрый обмен данными без дополнительных заголовков и формальностей.

1 ответ

Iceman

Нет, нельзя*.

*) Можно использовать такие технологии, как ActiveX, Flash, Java-апплеты, Sliverlight, Unity. Там всюду есть сокеты.

Но ни одну из них нельзя назвать кроссплатформенной. Так, ActiveX работает только в IE. Flash не работает на андроидах. А остальные используют древний NPAPI (Netscape Plugin API), от поддержки которого отказались разработчики Google Chrome.

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

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

PS но если вы и правда собираетесь работать с потоковым видео - надо брать нормальные системы для работы с ним, поддерживающие передачу по RTP. При передаче видео по TCP невозможно добиться отсутствия лагов и рывков под нагрузкой!

надо брать готовый WebRTC-клиент, готовый WebRTC-сервер и не велосипедить.

Вот полезная статья на эту тему:

Транслируем видеопоток с IP-камеры с помощью WebRTC

licensed under cc by-sa 3.0 with attribution.