2014-06-24 12 views
5

Vorrei inviare messaggi da Java a client WebSocket. Ho effettuato correttamente l'invio di un client js al server e ricevuto un messaggio sui client 2 js, quindi il codice lato client funziona correttamente.Messaggio push da Java con Spring 4 WebSocket

Il mio problema è che vorrei avviare un invio quando si verificano eventi all'interno dell'app Java. Ad esempio, ogni volta che vengono effettuati 10 ordini, invia un messaggio a tutti i clienti iscritti. È possibile?

mio config corrente:

<websocket:message-broker application-destination-prefix="/app"> 
    <websocket:stomp-endpoint path="/hello"> 
     <websocket:sockjs/> 
    </websocket:stomp-endpoint> 
    <websocket:simple-broker prefix="/topic"/> 
</websocket:message-broker> 

@Controller 
public class MessageController { 
    @MessageMapping("/hello") 
    @SendTo("/topic/greetings") 
    public Greeting greeting() throws Exception { 
     return new Greeting("Hello world"); 
    } 
} 

Quello che mi piacerebbe essere in grado di fare è qualcosa di simile:

public class OrderManager { 
    @Autowired MessageController messageController; 
    int orderCount = 0; 

    public void processOrder(Order o) { 
     orderCount++; 
     if(orderCount % 10 == 0) 
      messageController.greeting(); 
    } 
} 

e tutti i clienti iscritti alla websocket ricevere un messaggio.

risposta

6

È possibile utilizzare lo SimpMessagingTemplate. È registrato automaticamente. Basta autowire in qualsiasi fagiolo di primavera che vuoi.

@Autowired 
private SimpMessagingTemplate template; 
... 
this.template.convertAndSend("/topic/greetings", text); 
+1

Ho implementato il tuo approccio e ora ottengo un'eccezione "Impossibile avviare il bean subProtocolWebSocketHandler". Ho creato un post su di esso. Dai un'occhiata se puoi. Grazie. http://stackoverflow.com/questions/37638396/getting-a-failed-to-start-bean-subprotocolwebsockethandler-exception-while-try –

+0

ciao, ho fatto lo stesso processo ma il mio websocket non è chiamato, non ho qualsiasi errore –