2010-06-10 48 views
16

Sé que es posible usar WebSockets dentro de C# utilizando una aplicación de consola que se ejecuta junto a la aplicación web, pero me pregunto si es posible utilizar las solicitudes en la aplicación web C# para crear WebSockets.¿Cómo usar WebSockets en una aplicación web de C#?

He estado mirando a través de ASP.Net y estoy empezando a pensar que no será posible a menos que use directamente C# y cree mi propio servidor HTTP y luego use el mismo objeto socket para generar Web Sockets (similar a la manera Node.js y Socket.IO funcionan).

¿Alguna idea sobre cómo incluir WebSockets en una aplicación web C# sin tener varios servidores/proyectos?

+0

¿Puede proporcionar un enlace a cómo usar WebSockets con una aplicación de consola? No creía que .NET soportara websockets en absoluto. –

+0

Encontré una pareja: http://nugget.codeplex.com/ http://www.extjs.com/forum/showthread.php?99842-WebSocket-server-in-C http: // www .codeproject.com/KB/webservices/c_sharp_web_socket_server.aspx Todos ellos funcionan con Mono o .Net. – sixones

+0

@ John Saunders, no todo lo que debe hacerse está escrito en .NET BCL. Algunas cosas deben implementarse además de lo que .NET ya proporciona. –

Respuesta

11

Es posible alojar un servidor WebSockets en el contexto de una ASP.NET. Sin embargo, deberá tener en cuenta que la aplicación ASP.NET se puede reiniciar, lo que significa que el servidor se cerrará y será necesario restablecerlo junto con la aplicación ASP.NET.

Alojar la aplicación WebSockets dentro de un Servicio de Windows separado proporcionaría una mayor fiabilidad en el servidor de socket, pero luego requerirá que IPC comparta datos entre la aplicación ASP.NET y el Servicio de Windows.

Entonces, hay una disyuntiva para discutir. Depende de qué tan sensible sea su código de cliente a la pérdida y el restablecimiento de la conexión. Si esto se maneja lo suficiente, el alojamiento dentro de ASP.NET estará bien.

Tenga en cuenta que si bien los WebSockets son nuevos en HTML, el concepto existe desde hace muchos años con los Applets de Flash y Java. Especialmente con Flash, se usa comúnmente para juegos en línea y chat basado en la web.

+0

Gracias, pensé que sería el caso, pensé que la solución sería usar un proyecto de aplicación web en ASP.Net, un servidor WebSocket en C# y una biblioteca C# (que contiene todos los modelos) a la que cada proyecto servidor tiene acceso a. El proyecto en el que estoy trabajando realmente no necesita compartir los datos entre los 2 proyectos del servidor, ya que los 2 protocolos manejan diferentes rutas de datos. ¡Sin embargo, contener todo en 1 proyecto sería mucho más agradable! ¿Tiene algún vínculo a ejemplos o algo sobre el uso de WebSockets en ASP.Net? – sixones

+1

@sixones, en realidad no hay diferencia en la implementación real cuando se aloja en ASP.NET en lugar de un servicio de Windows. Simplemente inícielo en el evento de inicialización de la aplicación en lugar de llamar al servicio 'OnStart'. –

3

Echa un vistazo a .net client implementations de Kaazing. Al usar estos clientes, puede conectarse a cualquier servidor websocket.

+0

Me preguntaba acerca de un servidor, no una implementación de cliente, aunque gracias. – sixones

3

PokeIn 2.0 ha construido en función de WebSocket y que no requiere ningún entorno especial para trabajar. Detalles disponibles en here

Cuestiones relacionadas