Позвольте мне попытаться объяснить различные показатели успеха, с которыми вы могли столкнуться. Хотя сам протокол HTML5 Web Socket не знает о прокси-серверах и брандмауэрах, он поддерживает HTTP-совместимое рукопожатие, поэтому HTTP-серверы могут совместно использовать свои порты HTTP и HTTPS по умолчанию (80 и 443) со шлюзом или сервером Web Sockets.
Протокол Web Socket определяет префикс ws: // и wss: // для обозначения соединения WebSocket и WebSocket Secure, соответственно. Обе схемы используют механизм обновления HTTP для обновления до протокола Web Socket. Некоторые прокси-серверы безвредны и прекрасно работают с веб-сокетами; другие будут препятствовать правильной работе веб-сокетов, вызывая сбой соединения. В некоторых случаях может потребоваться дополнительная настройка прокси-сервера, а некоторые прокси-серверы могут нуждаться в обновлении для поддержки веб-сокетов.
Если незашифрованный трафик WebSocket проходит через явный или прозрачный прокси-сервер на своем пути к серверу WebSocket, то, независимо от того, ведет ли себя прокси-сервер так, как должен, соединение почти наверняка оборвется сегодня (в будущем, прокси-серверы могут стать осведомленными о веб-сокете). Поэтому незашифрованные соединения WebSocket следует использовать только в самых простых топологиях.
Если используется зашифрованное соединение WebSocket, то использование Transport Layer Security (TLS) в соединении Web Sockets Secure гарантирует, что команда HTTP CONNECT будет выполнена, когда браузер настроен на использование явного прокси-сервера. Это устанавливает туннель, который обеспечивает низкоуровневую сквозную связь TCP через прокси-сервер HTTP, между клиентом Web Sockets Secure и сервером WebSocket. В случае прозрачных прокси-серверов браузер не знает о прокси-сервере, поэтому HTTP CONNECT не отправляется. Однако, поскольку трафик в зашифрованном виде зашифрован, промежуточные прозрачные прокси-серверы могут просто пропустить зашифрованный трафик, так что гораздо больше шансов, что соединение WebSocket будет успешным, если используется Web Sockets Secure. Использование шифрования, конечно, не бесплатно, но часто обеспечивает самый высокий уровень успеха.
Одним из способов увидеть его в действии является загрузка и установка Kaazing WebSocket Gateway - высокооптимизированного шлюза WebSocket с поддержкой прокси, который обеспечивает встроенную поддержку WebSocket, а также полную эмуляцию стандарта для старых браузеров.