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();
是否返回完整的消息。