2011-11-02 27 views
5

He creado un servidor de chat WebSocket utilizando la especificación hybi-17 usando .NET 4.0 y Sockets. Si el navegador se conecta al servidor de chat en el puerto 81, todo funciona como debería. Sin embargo, debido a los firewalls de la empresa, etc. - Necesito navegador para conectarme al puerto 80, ya que debe ser accesible para todas las PC del mundo.Websocket Server Detrás de IIS 7 Reverse Proxy

Así que estoy usando IIS 7 as a reverse proxy. Logré hacer que el navegador se conectara al ws://localhost/chatProxy en IIS 7, que luego envía un proxy a la solicitud al http://localhost:81/chatProxy donde el servidor websocket está escuchando.

El servidor Websocket realiza el intercambio de contactos y crea un socket para la conexión, luego vuelve al estado de escucha.

El problema es que, en el lado del cliente, los eventos "onopen" de websocket nunca se activan. Es como si IIS no enviara la solicitud de vuelta al navegador.

¡Cualquier ayuda será muy apreciada!

Gracias de antemano!

Respuesta

7

Esto se debe a que IIS 7 no conoce websockets y no puede proxy. Sin embargo, reenviará la solicitud inicial a su servidor websockets ya que la solicitud inicial a un servidor websocket es una solicitud HTTP estándar (con algunos encabezados adicionales). IIS lo sabrá y simplemente reenviará la solicitud. Sin embargo, al recibir la solicitud de websocket, el servidor websocket enviará una respuesta 101 y cambiará al modo websocket. IIS no comprenderá el tráfico de websocket y no podrá proxy eso.

IIS 8 admitirá websockets de forma nativa (la compatibilidad se incluirá en .NET 4.5) y con suerte Microsoft también agregará soporte para revertir el tráfico proxy websocket.

+0

ah hombre! de vuelta al tablero de dibujo :) –