Ответ 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).