1.接口描述
很多我们要了解一个框架,需要从源码开始。一开始我搜索spring framework框架看看有没有关于接口的详细介绍,发现没有,所以只有自己翻源码进行整理。先整理出有哪些接口,然后对接口的详细方法进行介绍。
webSocket中有:WebSocketConfigurer、WebSocketHandler、WebSocketHandlerRegistration、HandshakeInterceptor、WebSocketHandlerRegistry、WebSocketSession、WebSocketMessage<T>、WebSocketClient、WebSocketMessageBrokerConfigurer等,大致主要的就是这些,下面我们将详细介绍,这些接口的作用和有哪些方法需要实现。
2.接口详解
2.1 WebSocketConfigurer
Defines callback methods to configure the WebSocket request handling:定义回调方法来配置的WebSocket请求处理。
接口方法:void registerWebSocketHandlers(WebSocketHandlerRegistry registry);如果需要注册{ WebSocketHandler}等包括SockJS后备选项。
2.2 WebSocketHandler
处理程序的WebSocket的消息和生命周期事件。同时此接口的实现在本地处理异常的地方。
接口方法:
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
提供了配置{ 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();
是否返回完整的消息。