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

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

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

  • хорошее: веб-сокетов добавить некоторые полезные вещи, как autoreconnection, идентификаторы сессий и т. д.
  • плохо: WebSockets добавить много накладных расходов

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

1 ответов


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

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

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

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

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

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

обновление:

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

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