2012-02-10 12 views
10

Había configurado un sistema que tenía un programa Java ejecutándose en un servidor y un applet de Java incrustado en una página en el navegador de un cliente y los dos se comunicaban a través de sockets Java. Me pregunto si puedo pasar de un applet de Java a solo HTML5 y javascript, usando un WebSocket en el lado del cliente para la comunicación con el socket de Java en el servidor.¿Se puede conectar un socket web HTML5 a un socket Java?

¿Hay una manera simple de hacer que un WebSocket se comunique con un socket de Java?

+2

[Este] (http://stackoverflow.com/q/3202188/1101070) pregunta/respuesta es probablemente lo que estás buscando. No ha mencionado ningún detalle sobre su entorno, pero esa respuesta es bastante completa. –

+0

Para poner la respuesta a esto sucintamente: No, no puede conectar un Socket de Java a un WebSocket. Sin embargo, hay implementaciones de WebSocket del lado del servidor para Java. – BCarpe

+0

Tendría que tomar uno de estos y modificar mi programa de servidor existente para pasar sus datos usando eso. – BCarpe

Respuesta

14

¿Hay una manera simple de hacer que un WebSocket se comunique con un zócalo Java?

Por lo que entiendo, WebSocket funciona por el lado del cliente abriendo un puerto 80 conéctese al lado del servidor, y enviando una solicitud variante HTTP 1.1 al servidor para negociar una conexión WebSocket. Si el servidor lo reconoce, enviará una respuesta adecuada, y luego permitirá que la conexión TCP aún abierta se utilice para las interacciones cliente-servidor de dúplex completo.

Parece que sería posible juntar rápidamente un lado del servidor que solo entendió la negociación de WebSocket y HTTP no completo. Sin embargo, creo que es mejor mirar las implementaciones de WebSocket existentes, incluidas las integradas en los servidores HTTP/pilas de protocolos.

This Wikipedia page compara una serie de implementaciones de WebSocket, y debería ayudarlo a decidir qué implementación del servidor usar.

Pero para responder directamente a su pregunta literal, un cliente de WebSocket solo puede conectarse a un servidor WebSocket; es decir, aquel que puede realizar la negociación inicial. (En el lado del cliente, podría implementar desde un socket simple, pero necesitaría implementar todas las "cosas HTTP" además de eso ... para la fase de configuración.)

4

No, no puede comunicarse usando sockets regulares con WebSockets del cliente.

WebSockets son solicitudes HTTP especiales, con una actualización en el encabezado HTTP y un protocolo estándar para establecer una conexión (ver official RFC doc).

Cuestiones relacionadas