Websockets não está funcionando (aceleração ssl?)

1

Testando um aplicativo socket.io no ambiente PROD pela primeira vez, descobrimos que enquanto o xhr-polling transport (pesquisa longa Ajax) funciona, o websocket transport não.

Olhando os dados transmitidos usando Fiddler , posso ver que o

  • UPGRADE acontece e
  • a primeira mensagem do servidor (5 bytes brutos) chega ao cliente.
  • O cliente envia algumas mensagens para o servidor, o que normalmente resulta em mensagens do cliente de servidor >

Mas essas mensagens de cliente de servidor > nunca chegam (não sei ao certo se as mensagens do servidor cliente- > chegam no lado do servidor). Eventualmente (após cerca de 6 segundos), o Fiddler reporta um

Read from Server failed...

e uma nova conexão é estabelecida, sem sucesso como a primeira.

Nossa configuração é algo parecido com isto:

Internet - > Firewall - > BIG-IP 3600 (termina SSL) - > Servidor Node.js

Eu acho que o firewall não pode ser o culpado, pois tudo o que ele vê é um fluxo de dados criptografados por SSL, e com um transporte que não é websocket, ele funciona. Eu também tentei a opção match origin protocol em socket.io , sem sucesso.

Infelizmente, não posso jogar livremente nesse ambiente, por isso tentei replicar o problema no meu ambiente DEV, sem sucesso. Eu criei um proxy SSL de software (usando node.js ' http-proxy ), que deve funcionar de forma semelhante ao BIG-IP. Mas passar por esse proxy SSL com websockets funciona muito bem.

Isso poderia ser um problema com o BIG-IP? Configuração? O que mais poderia ser?

    
por Eugene Beresovsky 28.01.2013 / 08:13

1 resposta

1

Em dezembro de 2012, o BIG-IP não suportava o descarregamento SSL do tráfego do WebSocket. Como as solicitações parecem HTTP, elas são processadas por um mecanismo HTTP que não entende quando a direção do fluxo é alterada para uma conexão WebSocket. Não use o descarregamento de SSL com conexões WebSocket até que seja oficialmente suportado.

    
por 28.01.2013 / 09:49