Тестирование socket.io
приложения в среде PROD, мы обнаружили, что в то время как xhr-polling
транспорт (длинный опрос Ajax) работает, websocket
транспорт нет.
Просмотр данных, передаваемых с использованием Fiddler
, Я вижу, что
UPGRADE
происходит иНо эти сообщения server-> client никогда не приходят (я даже не уверен, поступают ли сообщения client-> server на стороне сервера). В конце концов (примерно через 6 секунд) Fiddler сообщает о
Read from Server failed...
и устанавливается новое соединение, такое же неудачное, как и первое.
Наша установка выглядит примерно так:
Интернет -> Брандмауэр -> BIG-IP 3600 (завершает SSL) -> Сервер Node.js
Я бы подумал, что брандмауэр не может быть виновником, поскольку все, что он видит, - это зашифрованный поток данных SSL, а с транспортом без веб-сокетов он работает. Я также попробовал match origin protocol
вариант в socket.io
, безуспешно.
К сожалению, я не могу свободно играть в этой среде, поэтому безуспешно пытался воспроизвести проблему в моей среде DEV. Я создал программный SSL-прокси (используя node.js
с http-proxy
), который должен работать аналогично BIG-IP. Но использование SSL-прокси с веб-сокетами работает нормально.
Может ли это быть проблемой с BIG-IP? Конфигурация? Что еще это может быть?
По состоянию на декабрь 2012 года BIG-IP не поддерживает разгрузку SSL трафика WebSocket. Поскольку запросы выглядят как HTTP, они обрабатываются механизмом HTTP, который не понимает, когда изменяется направление потока для соединения WebSocket. Не используйте разгрузку SSL с соединениями WebSocket, пока она не будет официально поддержана.