2014-10-20 5 views
6

Uygulamamda websockets kullanmaya çalışıyorum. Bu eğitimi takip ettim: Spring, websockets kullanarak bağlı istemcilere nasıl mesaj yayınlanır?

Mükemmel çalışıyor.

Bağlı müşterilerinden biri düğmesine basın

, bu yöntem denir:

@MessageMapping("/hello") 
@SendTo("/topic/greetings") 
public Greeting greeting() throws Exception { 
    System.out.println("Sending message..."); 
    Thread.sleep(1000); // simulated delay 
    return new Greeting("hello!");   
} 

ve mesaj bağlı istemcilerin tümüne yayınlanır.

Şimdi, sunucu uygulamamı değiştirerek istemcilerden etkileşimde bulunmadan, tüm bağlı müşterilerime düzenli olarak (her saat) bir mesaj yayınlayacağım.

Böyle bir şey (ama bu besbelli çalışmıyor): tavsiye için

@Scheduled(fixedRate = 3600000) 
public void sendMessage(){ 
    try { 
    @SendTo("/topic/greetings")  
    greeting(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Thx. Yalnızca SubProtocolWebSocketHandler ile başlatılır SimpAnnotationMethodMessageHandler, çalışır @SendTo

cevap

9

, Hance WebSocketMessage müşteriler alındığında.

@Autowired 
private SimpMessagingTemplate brokerMessagingTemplate; 
....... 
this.brokerMessagingTemplate.convertAndSend("/topic/greetings", "foo"); 
+0

Bunu lütfen ortaya Can:

Eğer @Scheduled hizmete SimpMessagingTemplate brokerMessagingTemplate için enjekte ve doğrudan kullanmalıdır ihtiyaçlarınızı elde etmek için? nasıl enjekte edebilirim? –

+0

Lütfen '@ Autowired' etrafında cevabımdaki bir düzenlemeye bakın. –