2014-06-24 27 views
5

Java'dan WebSocket istemcilerine mesaj göndermek istiyorum. Bir js istemcisini sunucuya gönderdim ve 2 js istemcisinde bir ileti aldım, böylece istemci tarafı kodu iyi çalışıyor.Spring 4 WebSocket ile Java'dan push mesajı

Sorunum, Java uygulamasında olaylar gerçekleştiğinde bir gönderi başlatmak istiyorum. Örneğin, 10 sipariş verildikten sonra, tüm abone müşterilere bir mesaj gönderilir. Mümkün mü?

Benim geçerli yapılandırma: İsterdim Ne

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

yapabilmek için böyle bir şeydir:

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

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

ve WebSocket'e tüm abone istemciler bir ileti alırsınız.

cevap

6

SimpMessagingTemplate. Numarasını otomatik olarak kaydedebilirsiniz. Sadece autowire istediğin herhangi bir Bahar fasulyesinde.

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

Yaklaşımınızı gerçekleştirdim ve şimdi bir istisna alıyorum 'Bean subProtocolWebSocketHandler' başlatılamadı. Bu konuda bir yazı oluşturdum. Eğer yapabilirsen bir bak. Teşekkürler. http://stackoverflow.com/questions/37638396/getting-a-failed-to-start-bean-subprotocolwebsockethandler-exception-while-try –

+0

merhaba, aynı işlemi yaptım ama benim websocket çağrılmadım, yok herhangi bir hata. –