socket.io application in the PROD environment for the first time, we found that while the
xhr-polling transport (Ajax long polling) works, the
websocket transport does not.
Looking at the data transmitted using
Fiddler, I can see that the
- the first message from the server (5 bytes gross) arrive at the client.
- The client then sends a couple of messages to the server, which normally result in server->client messages
But those server->client messages never arrive (I'm not even sure if the client->server messages arrive on the server side). Eventually (after about 6 seconds), Fiddler reports a
Read from Server failed...
and a new connection gets established, as unsuccessful as the first one.
Our setup looks something like this:
Internet -> Firewall -> BIG-IP 3600 (terminates SSL) -> Node.js server
I'd think the firewall could not be the culprit, as all it sees is an SSL encrypted stream of data, and with a the non-websocket transport it does works. I also tried the
match origin protocol option in
socket.io, without success.
Unfortunately I cannot freely play in that environment, so I tried to replicate the issue in my DEV environment, without success. I created a software SSL proxy (using
http-proxy), which should work similar to BIG-IP. But going through that SSL proxy with websockets works just fine.
Could this a be an issue with the BIG-IP? Configuration? What else could it be?