Spring容器整合WebSocket


原鏈接:http://blog.csdn.net/canot/article/details/52575054

 

WebSocker是一個保持web客戶端與服務器長鏈接的技術。這樣在兩者通信過程中如果服務器有消息發送給客戶端,就無需等待web客戶端發送一個請求了(HTTP協議是請求相應式,如果沒有Web客戶端的請求,服務器是無法對客戶端做相應的)。

單獨的部署一個WebSocket服務器很簡單,只需要幾個注解即可。那么當在spring項目中如何使用WebSocket呢?也行你會想,沒什么不同啊。一樣通過WebSocket注解就可以了啊。但我們使用Spring的目的就是通過Spring的容器來管理Bean,將WebSocket獨立出來如果WebSocket中需要用到Spring容器中的bean該怎么辦?

Spring 提供了兩種將WebSocket部署在Spring容器中的方法:

方法一:

使用org.springframework.web.socket.server.standard.ServerEndpointExporter.ServerEndpointExporter類。在Spring容器中添加一個該類的實例:

@Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }

Spring容器會去掃描包,將WebSocket加入容器。此時對於WebSocket則使用Spring的注解:

@ServerEndpoint(value="/getLocation",configurator = SpringConfigurator.class) @Component public class TransmissionLocationWebSocket { xxxx }

SpringConfigurator.class 為Spring提供的一個類。通過這個類,該WebSocket中就可以注入Spring容器的bean。

方法二:

使用Spring封裝的WebSocket接口TextWebSocketHandler。

public class WebSocketHandler extends TextWebSocketHandler { /** * 連接成功時候 */ @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { } /** * 連接關閉時候 */ @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { } }

將類添加到Spring容器中,並配置:

@Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myHandler(), "/getLocation").setAllowedOrigins("*"); } @Bean public WebSocketHandler myHandler() { return new WebSocketHandler(); }

 

Spring與WebScoket的配置即如上兩個方法。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM