Подтвердить что ты не робот

WebSockets против сырых TCP-сокетов во Flash

Какие WebSockets добавляют к необработанному TCP-соединению? Почему я должен использовать WebSockets?

Я бы хотел услышать минусы и плюсы:

  • Хорошо: WebSockets добавляют некоторые полезные вещи, такие как автосоединение, идентификаторы сеансов и т.д.
  • Плохо: WebSockets добавляет много накладных расходов

У меня будут только клиенты Flash, нет необходимости поддерживать Javascript-клиентов.

4b9b3361

Ответ 1

Вы не можете делать сырые сокеты из веб-приложения в браузере. Даже "сырые" соединения сокетов из Flash не являются действительно сырыми, потому что вам нужно ответить на запрос файла политики, чтобы получить CORS (часть причин для установления связи с WebSockets).

После первоначального рукопожатия WebSocket сообщения WebSocket имеют два байта служебных данных кадрирования для каждого кадра (Hixie- * has '\ x00...\xff' и HyBi-07 имеет два байтовых заголовка), поэтому накладные расходы довольно незначительны по сравнению с к обычным сокетам.

Рукопожатие WebSocket - это HTTP-совместимый запрос Upgrade, поэтому легко интегрировать поддержку WebSockets на существующие веб-серверы и использовать существующие веб-порты (80/443), что означает, что соединение WebSocket также может более легко интегрироваться в существующие правила брандмауэра.

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

В следующей редакции протокола WebSockets rev (HyBi-07) их защита от неправильного использования веб-посредников с использованием маскирования данных полезной нагрузки от клиента к серверу XOR.

Такие вещи, как автоматическое пересоединение, идентификаторы сеансов и т.д., не определены в WebSockets, хотя в нескольких фреймворках Javascript, построенных на WebSockets, есть такие, как Socket.IO. Если вы делаете WebSockets из Flash-приложений, вам нужно будет самостоятельно управлять сеансом или преобразовать существующую библиотеку управления сеансом, чтобы использовать WebSockets, а не сокеты Flash (например, это довольно простое преобразование).

Обновление

Несколько ссылок, которые могут быть полезны для вас или других, которые приземляются здесь:

  • AS3WebSocket: клиентская библиотека WebSockets для приложений Flash.
  • web-socket-js: Резервное копирование WebSockets/polyfill реализовано во Flash для приложений Javascript (для добавления поддержки WebSockets для браузеров с Flash, но без собственных WebSockets).