views:

1224

answers:

2

I know its possible to use WebSockets within C# using a console application running along side the web application but Im wondering if its possible to use the requests on the C# web application to create the WebSockets.

I've been looking through ASP.Net and Im starting to think it wont be possible unless I use straight up C# and create my own HTTP server and then use the same socket object to generate Web Sockets (similar to the way Node.js and Socket.IO work).

Any thoughts on ways to include WebSockets on a C# web application without having multiple servers / projects?

+3  A: 

It's possible to host a WebSockets server within the context of an ASP.NET. However, you'll need to be aware that the ASP.NET application can be restarted which means the server will be shut down and will need to be re-established along with the ASP.NET application.

Hosting the WebSockets application within a separate Windows Service would provide greater reliability in the socket server, but then will require IPC to share data between the ASP.NET application and the Windows Service.

So, there's a trade-off to discuss. It depends on how sensitive your client code is to connection loss and re-establishment. If this is handled sufficiently then hosting within ASP.NET will be fine.

Note that while WebSockets are new to HTML, the concept has existed for many years with Flash and Java Applets. Especially with Flash it's commonly used for online games and web-based chat.

Sam
Thanks, I figured that would be the case, I was thinking the trade-off would be using a web application project in ASP.Net, a WebSocket server in C# and a C# library (containing all the models) each server project has access to. The project Im working on doesn't actually need to share the data between the 2 server projects as the 2 protocols handle different data paths. However containing everything in 1 project would be a lot nicer!Do you have any links to examples or anything about using WebSockets in ASP.Net?
sixones
@sixones, there's really no difference in actual implementation when hosted in ASP.NET instead of a windows service. Just initialize it at application initialize event instead of the service `OnStart` call.
Sam
A: 

Check the silverlight and .net client implementations from Kaazing. Using these clients you can connect to any websocket server.

Sidda
I was wondering about a server not a client implementation, thanks though.
sixones