2012-08-30 14 views
21

Estoy implementando un servlet Jetty Websocket. Cuando el servidor recibe una nueva conexión, deseo enviar un mensaje que será leído por la función onopen de websocket. Deseo que este mensaje se envíe solo durante la apertura y no use la función connection.SendMessage() normal. ¿Es posible hacer eso? ¿y cómo?es posible enviar datos cuando se abre una conexión websocket

Respuesta

15

No hay soporte para esto en el protocolo, pero usted podría evitar algo.

  • Cuando su servidor completa un intercambio de información, almacene el mensaje inicial que desea entregar a un cliente.
  • En la función onopen de su cliente, envíe una solicitud de "leer el mensaje inicial".
  • En su servidor, verifique que este cliente no haya leído su mensaje inicial; responder con el mensaje; establecer una bandera diciendo que el mensaje inicial ha sido enviado.
  • Su cliente y servidor ahora son libres de enviar otros mensajes.
+0

Gracias, me preguntaba si podría haberme perdido algo al buscar en línea. Seguiré el enfoque que has sugerido. – DPD

34

No olvide la cadena de consulta. Es válido en la url de WebSocket.

new Websocket('ws://yoursite.com/path?a=1&b=2&c=3') 

A continuación, puede analizar fácilmente esta url del lado del servidor para recuperar los datos.

+0

ya, pero ¿cómo se analiza la URL en el lado del servidor? ¿Dónde está disponible la url en sí? –

+0

probablemente también debería mencionar la opción de @PathParam ... ver [esta respuesta] (https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onpen- method-with-jee7-websockets) –

Cuestiones relacionadas