WebSockets против сырых TCP-сокетов во Flash - PullRequest
21 голосов
/ 11 мая 2011

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

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

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

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

1 Ответ

18 голосов
/ 11 мая 2011

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

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

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

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, реализованное во Flash для приложений Javascript (для добавления поддержки WebSockets в браузеры с Flash, но без встроенных WebSockets).
...