2012-08-22 26 views
26

Sé que la clase ClientWebSocket de .Net 4.5 no es compatible con Windows 7, pero ¿es posible crear un servidor WebSocket que se ejecute en Windows 7 utilizando la API .Net 4.5?.Net 4.5 ¿WebSocket Server se ejecuta en Windows 7?

Para hacer más clara a mí mismo, de acuerdo tanto con here y here, parece que la parte del lado del servidor de la aplicación .Net 4.5 WebSocket debe ser apoyada incluso en Windows 7, sin embargo, la ejecución de un HttpListener y tratando de acceder a él mediante un proceso abierto -source Implementación WebSocket me consiguió un error "Portocol no admitido"

+0

Si bien es una cuestión _interesting_, que no muestra mucho esfuerzo. ¿Qué has intentado? De acuerdo con MSDN, de hecho, solo se admiten Windows 8 y Server 2012. ¿Requiere soporte incorporado de .NET? De lo contrario, hay varias bibliotecas de terceros que se adaptan a sus necesidades. – CodeCaster

Respuesta

34

El soporte HTTP.SYS de nivel de sistema operativo para websockets está limitado a Win8/Windows Server 2012, lo cual estoy de acuerdo es una tontería (debe ser parte de una ventana- actualización, o un paquete de servicio como máximo, IMO).

Esto significa que no puede usar directamente el soporte de marco para WebSockets de HttpListener o ASP.NET.

Pero: en cuanto a "es posible crear un servidor WebSocket" - claro ... pero solo si usted maneja las comunicaciones TCP/IP usted mismo, o utiliza una biblioteca de terceros para el mismo. Este es un pequeño molesto, pero no es tan malo como podría sonar.

Editar: después de algunas comprobaciones, puedo confirmar que los componentes del lado del servidor para este no funcionan en Windows 7 (etc); el IsWebSocketRequest devuelve falseaunque es una solicitud de socket web con Connection: Upgrade y Upgrade: websocket (etc.) encabezados (de una sesión de Chrome, ya que ayuda).

soy, sin embargo, muy sorprendido para encontrar que los elementos de cliente no funcionan, porque: es simple y no (o al menos, no necesidad de) involucrar HTTP.SYS. Intentar usarlos arroja un PlatformNotSupportedException.

+0

Para responder a ambas preguntas, mientras que ClientWebSocket * es * solo compatible con Windows 8 en adelante, las clases del lado del servidor son, al menos, de acuerdo con MSDN (http://msdn.microsoft.com/en-us/library/hh159274 .aspx) - * son * compatibles – sternr

+1

@sternr No creo que lo sean; Creo que va a error en el tiempo de ejecución. Lo que es aún más interesante: tenía la impresión de que 'ClientWebSocket' ** era ** compatible con Win7, etc., ya que no depende de HTTP.SYS! –

+1

@sternr investigó un poco más sobre eso; la respuesta se encuentra. –