2014-06-24 15 views
5

Tôi muốn đẩy tin nhắn từ Java tới máy khách WebSocket. Tôi đã thực hiện thành công một máy khách js gửi tới máy chủ và nhận lại một tin nhắn trên các máy khách 2 js, vì vậy mã phía máy khách hoạt động tốt.Tin nhắn push từ Java với Spring 4 WebSocket

Vấn đề của tôi là tôi muốn bắt đầu gửi khi sự kiện xảy ra trong ứng dụng Java. Vì vậy, ví dụ như mỗi lần 10 đơn đặt hàng đã được đặt gửi một tin nhắn cho tất cả các khách hàng đăng ký. Điều này có thể không?

cấu hình hiện tại của tôi:

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

Những gì tôi muốn để có thể làm là một cái gì đó như thế này:

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

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

và tất cả khách hàng đăng ký với WebSocket nhận được một tin nhắn.

Trả lời

6

Bạn có thể sử dụng số SimpMessagingTemplate. Nó tự động được đăng ký. Chỉ cần autowire nó trong bất kỳ mùa xuân đậu bạn muốn.

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

Tôi đã triển khai phương pháp tiếp cận của bạn và bây giờ tôi có ngoại lệ 'Không thể khởi động bean subProtocolWebSocketHandler'. Tôi đã tạo một bài đăng về nó. Xin hãy xem nếu bạn có thể. Cảm ơn. http://stackoverflow.com/questions/37638396/getting-a-failed-to-start-bean-subprotocolwebsockethandler-exception-while-try –

+0

Xin chào, tôi đã thực hiện quy trình tương tự nhưng websocket của tôi không được gọi, tôi không có bất kỳ lỗi nào. –

Các vấn đề liên quan