Sto implementando un servlet Jetty Websocket. Quando il server riceve una nuova connessione, voglio inviare un messaggio che verrà letto dalla funzione onopen di websocket. Desidero che questo messaggio venga inviato solo durante l'apertura e non utilizzando la funzione regolare connection.SendMessage(). è possibile farlo? e come?è possibile inviare un dato quando viene aperta una connessione web socket
risposta
Non vi è alcun supporto per questo nel protocollo ma è possibile fondere qualcosa da soli.
- Quando il server completa l'handshake, memorizza il messaggio iniziale che si desidera consegnare a un client.
- Nella funzione
onopen
del client, inviare una richiesta di "lettura messaggio iniziale". - Nel server, verificare che questo client non abbia letto il suo messaggio iniziale; rispondere con il messaggio; imposta una bandiera dicendo che il messaggio iniziale è stato inviato.
- Ora client e server sono liberi di inviare altri messaggi.
Non dimenticare la stringa di query. È valido nell'URL di WebSocket.
new Websocket('ws://yoursite.com/path?a=1&b=2&c=3')
allora si può facilmente analizzare questo URL sul lato server per recuperare i dati.
ya ma come si analizza l'url sul lato server? dove è reso disponibile l'url? –
dovrebbe probabilmente menzionare anche l'opzione di un @PathParam ... vedi [questa risposta] (https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onopen- metodo-con-jee7-WebSockets) –
Grazie, mi stavo chiedendo se potrei aver perso qualcosa durante la ricerca online. Seguirò l'approccio che hai suggerito. – DPD