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

是否返回完整的消息。

相关文章
相关标签/搜索