Hi Raine,
How many connections is "thousands"? There'll be a big different in how you'll have to architecture your WebSocket infrastructure between 2k, 10k, 50k and 300k despite which language you choose to use. Node should be able to handle more connections than Ratchet but even it will fail at a certain number and you'll have to use new methods to scale out, as opposed to up.
Ratchet has no problem with throughput, it in fact handles I/O on par with other languages in messaging benchmarks. Other languages begin to pull ahead when there are more concurrent connections. I've only tested Ratchet with up to 2.5k connections so far, with no issues. I believe Node boasts 10k+ (don't quote me, plz check with them) and
Tavendo WebMQ can handle 200k.
A quick note on Node; Node is a language/platform not a WebSocket library. There are a number of WebSocket libraries written in Node, you'll need to pick the one that best suites your needs. Also, don't stop at Node as the end-all-be-all for I/O solutions.
Python is another option you should look into.
There are two ways to support IE6: Flash Sockets and fallback techniques. Flash offers the most easy and transparent method as you simply drop in a polyfill library on the client side and allow Flash to connect on the server side. The Flash options has 2 drawbacks: If a client doesn't support WebSockets they must have Flash installed, therefore you could have rare cases where clients can't use your application. The second drawback is Flash can take up to 3 seconds to connect (or fail) depending on proxies. An alternate solution is to use a technique called
SockJS. SockJS has a client side javascript library and various server libraries in different languages. SockJS provides fallback techniques for browsers that don't support WebSockets such as XHR or IFrame polling, long polling, etc.
Which ever server language you choose to use they all can talk to your JavaScript code the exact same way. Think of it like XMLHttpRequest; you have Javascript code that communicate with the server; but the Javascript doesn't care which language the server is using, just the format it receives the data.
Cheers.