spring4新特性webSocket(二)

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();

是否返回完整的消息。

相關文章
相關標籤/搜索