IIS 8 has already support WebSocket as I mention previously in my blog post. But I take a look at my notes again and see that there is a problem with IIS for maintaining long running service. I’m not familiar with IIS internal structure and still learning about that lately.
The problem is in IIS Recycle.
Here’s a couple discussion from NServicebus mailing list about that.
Here’s from another blog.
Take a look at the first commenter
Monday, June 16, 2008 11:23 PM by Rob Eisenberg
Just for the record…this type of HTTP push technique is often referred to as Comet. The real question is, how scalable is the server going to be? From everything I’ve been able to determine, it’s pretty much impossible to build a scalable Comet server for IIS. This is due to the way connections and threads are handled. I’ve tried to get some information from Microsoft about this, but they don’t have answers yet. Only time/experimentation will tell if the server is scalable enough to build a multi-player game or chat application. I’m hopeful, because the amount of work it takes to create a truly scalable socket server is tremendous.
I track it down from Udi Dahan blog post
You also quickly notice that is the reason why publishing message from the web server is a bad idea after dig deeper into NServiceBus.
The mostly used websocket server in .NET is SuperWebSocket. I see a interesting discussion about should we host websocket server into IIS or standalone windows service.
You’d better deploy it as a Windows Service. Because if you host it in IIS, you don’t know when the IIS will recycle the application pool.
So ? What do you think ?
As you know, I’ve been playing a lot with WebSocket lately. What I expect is the built in websocket support in IIS. Previously I use websocket library server like SuperWebsocket or
Fleck. But because we have already run IIS on port 80, we have to use another port for websocket. Not a standard one. This is actually against the specification and cause a lot of problem in the strict network policy environment.
The beauty of websocket is in that part. It use a standard port. Open a non standard port in some company is very difficult job. Firewall and proxy friendly in the future. Of course you can use tweak to make it run in the same port or use proxy to enable the behaviour. But that’s unnatural.
Finally i ‘m so happy because it will be supported in the IIS 8 with help .NET 4.5. You can take a look at this interesting article. Very simple codes for websocket. Just create the ashx handler and it works.
But the happiness ends there.. Take a look at this picture..
You should definitely sad to hear about this one. We can be expected just to change our production server in the short run. There are a lot of work need to be done.
So we have to find another alternative right ? until next post.