It works fine from here ;p
I strongly suspect that this is primarily the effect of down-level intermediary proxy servers mangling the web-socket request. In most cases... "squid". Basically, a web-socket request is meant to have something like (as http-headers):
plus some other headers, such as
Sec-WebSocket-Key for up-to-date implementations (RFC6455 and most of the Hybi versions), or
Sec-WebSocket-Key2 (for the early implementations, Hixie-76).
We even accept multi-value headers that we see in-the-field, such as:
Connection: Upgrade, Keep-Alive
even though that isn't really all that meaningful (it doesn't make sense to ask whether a web-socket connection has "keep alive" enabled). However, we get a constant stream of requests of the form:
(with no upgrade header), or
which are... not web-socket requests. I know that no web-socket aware browser issued that request, so it basically screams "dodgy proxy server". If you have a dodgy proxy server that doesn't know how to change protocol to web-sockets, then the chances are good that it would get very ill if we did change protocol, so if we see something obviously bad we kill the connection dead, to protect all parties.
Perhaps the best thing to do is to look at http://websocketstest.com - if that reports errors, then we can't help - your network infrastructure is actively preventing successful use of web-sockets. Also note the caveats from that page:
Antiviruses, firewalls and HTTP proxies may interfere WebSocket connections, sometimes rendering them useless.
The good news, however, is that we only use web-sockets for nice to have functionality. Web-sockets being down does not stop your usage of Stack Exchange - it just prevents instant updates. We also use web-sockets on the chat system, but we fallback to polling if we can't establish a web-sockets connection.