1.接口描述web
不少咱們要了解一個框架,須要從源碼開始。一開始我搜索spring framework框架看看有沒有關於接口的詳細介紹,發現沒有,因此只有本身翻源碼進行整理。先整理出有哪些接口,而後對接口的詳細方法進行介紹。spring
webSocket中有:WebSocketConfigurer、WebSocketHandler、WebSocketHandlerRegistration、HandshakeInterceptor、WebSocketHandlerRegistry、WebSocketSession、WebSocketMessage<T>、WebSocketClient、WebSocketMessageBrokerConfigurer等,大體主要的就是這些,下面咱們將詳細介紹,這些接口的做用和有哪些方法須要實現。session
2.接口詳解框架
2.1 WebSocketConfigurerspa
Defines callback methods to configure the WebSocket request handling:定義回調方法來配置的WebSocket請求處理。.net
接口方法:void registerWebSocketHandlers(WebSocketHandlerRegistry registry);若是須要註冊{@link WebSocketHandler}等包括SockJS後備選項。接口
2.2 WebSocketHandler生命週期
處理程序的WebSocket的消息和生命週期事件。同時此接口的實如今本地處理異常的地方。事件
接口方法:get
void afterConnectionEstablished(WebSocketSession session) throws Exception;
WebSocket的交互後調用成功和WebSocket鏈接被打開,以備使用。
void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception;
當一個新的WebSocket消息到達時調用。
void handleTransportError(WebSocketSession session, Throwable exception) throws Exception;
處理來自底層的WebSocket的消息傳輸錯誤。
void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception;
調用後,WebSocket鏈接已被任何一方關閉,或者發生傳輸錯誤以後。雖然會話可能還專門開放,這取決於底層實現,在這一點上發送消息氣餒,最有可能不會成功。
boolean supportsPartialMessages();
是否WebSocketHandler處理部分消息。
2.3 WebSocketHandlerRegistration
提供了用於配置WebSocket的處理方法。
WebSocketHandlerRegistration addHandler(WebSocketHandler handler, String... paths);
添加更多處理器將共享相同的配置(攔截器,SockJS配置等)
2.4 HandshakeInterceptor
攔截器的WebSocket握手請求。能夠用來檢查握手請求和響應以及傳遞屬性的目標
boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception;
在處理前握手調用。
void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception);
握手完成後調用。響應狀態和頭代表握手,即它是否成功與否的結果。
2.5 WebSocketHandlerRegistry
提供了配置{@link WebSocketHandler}請求映射方法。
2.6 WebSocketSession
一個會話的WebSocket抽象。可發送消息經過WebSocket鏈接,並關閉它。
String getId();
URI getUri();
返回用於打開WebSocket鏈接的URL。
Map<String, Object> getHandshakeAttributes();
HttpHeaders getHandshakeHeaders();
2.7 WebSocketMessage
能夠處理或WebSocket鏈接上發送的消息。
T getPayload();
返回消息的有效載荷。
boolean isLast();
是否返回完整的消息。