2015-05-13 36 views
5

Sto provando a creare un server che notifica i client connessi quando si verificano cambiamenti. Per quello, sto usando Spring Boot per il server. Per consegnare le notifiche, ogni client stabilisce un socket con il server. Ho usato questa guida: https://spring.io/guides/gs/messaging-stomp-websocket/ e funziona perfettamente. In questo esempio, il client invia un messaggio sul socket e il server risponde.Avvio a molla + Websocket (SockJS)

  1. Il problema è che non riesco a trovare un modo in cui il server invia un messaggio al client senza che il client invii prima un messaggio!
  2. E 'possibile elencare tutte le websocket connesse?

Grazie,

risposta

6

Le mie risposte:

  1. Il cliente non ha bisogno di inviare un messaggio ma hanno per collegarsi e iscriversi. In realtà lo faccio personalmente in un'applicazione in cui un browser si connette e si abbona e quindi inizia a inviare messaggi. Sul lato server è possibile Autowire a Service (o altro componente) con un oggetto SimpMessagingTemplate e quindi utilizzare la famiglia di funzioni convertAndSend per inviare le cose a un utente specifico oa tutti i sottoscrittori. Se si controlla the portfolio project è possibile vedere come è fatto con l'argomento price.stock. Il client si connette e si abbona e il server ha un lavoro programmato da inviare ad esso. Questo servizio utilizza un oggetto MessageSendingOperations ma è possibile utilizzare SimpMessagingTemplate come menzionato sopra. Ho questo codice nel nostro servizio di applicazione:

    @Autowired 
    private SimpMessagingTemplate messagingTemplate; 
    
    ... 
    messagingTemplate.convertAndSendToUser(userId, destination, jsonMessage); 
    
  2. This question ha alcune buone informazioni su come trovare tutti gli utenti. Sembra che tu debba utilizzare gli eventi definiti nello Spring documentation on STOMP context events per tenere traccia delle cose da te se lo desideri. Generalmente dal momento che questo è un modello di abbonamento potresti non aver bisogno di sapere chi è connesso. Potresti anche creare il tuo argomento che invii una richiesta a tutti i clienti per rispondere e cercare i loro post. Non l'ho fatto io, ma Rossen (uno dei commentatori) è uno dei principali autori del progetto, quindi gli credo!

Speriamo che questo aiuti. Fammi sapere.

Problemi correlati