Meu problema foi resolvido configurando meu host do servidor websocket como 0.0.0.0
Eu tenho um balanceador de carga de aplicativo aws com um ouvinte https na porta 9999, encaminhando para um grupo na porta 9999 com uma instância ec2 sendo o destino.
Se eu executar meu servidor websocket com o nome do host configurado para meu domínio api.example.com
, quando o cliente tentar abrir uma conexão websocket, ele será:
Error during WebSocket handshake: Unexpected response code: 502
No entanto, se eu configuro meu servidor websocket com uma string vazia em vez do domínio, ele conecta muito bem !
Isso é problemático porque o servidor que pretendo executar nesta instância inicia automaticamente um servidor de soquete da Web APENAS SE existe uma configuração de nome de host de websocket fornecida, portanto, uma cadeia em branco significa que o servidor websocket nunca lançamento! Eu preferiria não ter que hackear a biblioteca para contornar essa condição. Então, eu estou querendo saber, porque no mundo uma string em branco funciona, mas o nome do domínio não?
Eu tentei localhost, o ip da caixa, etc, tudo resulta em um 502, exceto uma string em branco!
O ALB não usa um nome de host para a verificação de integridade. Portanto, se o seu servidor não suportar solicitações sem nomes de host, a verificação de integridade falhará, resultando em 5xx erros ao acessar o ALB.
Se o seu servidor não suportar isso, você tem duas opções: