Primeira regra do Firewall: não pode bloquear o que não consegue detectar.
O firewall permite o TLS? Em caso afirmativo, forneça conteúdo sobre o WSS em vez de WS.
-
Um cliente WSS normal abrirá uma conexão TLS com você ( source ) e enviará para você:
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
WebSocket-Protocol: sample
O firewall não consegue detectá-lo porque está em TLS.
-
Um cliente HTTP-CONNECT-WSS enviará isto para você:
CONNECT example.com:443 HTTP/1.1
Host: example.com
O firewall o vê como mais uma conexão HTTP-CONNECT-TLS. ( fonte )
Nota: websockets podem falhar devido a proxies intermediários que desconhecem o websocket
buffering connections mesmo se o firewall não bloqueá-lo. O mesmo acontece com o fluxo "cometa" HTTP.