2014-06-24 18 views
5

Chciałbym przekazać wiadomości z Java do klientów WebSocket. Udało mi się wysłać klienta js na serwer i odebrać wiadomość na 2 klientach js, więc kod po stronie klienta działa poprawnie.Wyślij wiadomość z Java ze Spring 4 WebSocket

Mój problem polega na tym, że chciałbym rozpocząć wysyłanie, gdy zdarzenia wystąpią w aplikacji Java. Na przykład za każdym razem, gdy zostało złożone 10 zamówień, wyślij wiadomość do wszystkich subskrybowanych klientów. czy to możliwe?

Mój aktualny config:

<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"); 
    } 
} 

Co chciałbym być w stanie zrobić coś takiego:

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

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

i wszystkie subskrybowane klientów do websocket otrzymać wiadomość.

Odpowiedz

6

Możesz użyć SimpMessagingTemplate. Jest on automatycznie rejestrowany. Po prostu autowire to w dowolnym Spring bean, który chcesz.

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

Zaimplementowałem Twoje podejście i teraz otrzymuję wyjątek "Nie można uruchomić komponentu bean subProtocolWebSocketHandler". Stworzyłem post o tym. Proszę spojrzeć, jeśli możesz. Dzięki. http://stackoverflow.com/questions/37638396/getting-a-failed-to-start-bean-subprotocolwebsockethandler-exception-while-try –

+0

cześć, zrobiłem ten sam proces, ale mój websocket nie jest wywoływany, nie mam jakikolwiek błąd. –

Powiązane problemy