目录
1.使用内置的AbstractWebSocketHandler
以 Spring Boot 2.1.0.RELEASE为例
1.使用内置的AbstractWebSocketHandler
该类是一个抽象类,包含于 org.springframework:spring-websocket 包中
这里引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
即可使用
使用时需要继承该类,根据需要重写相应方法即可
例如:
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
public class MyWebSocketHandler extends AbstractWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("Connection established");
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("收到消息:"+message);
Thread.sleep(2000L);
session.sendMessage(new TextMessage("Hello World!"));
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
System.out.println("Connection closed");
}
}
如果是Spring MVC可以在XML中配置端点映射(例如映射到/hello):
<websocket:handlers>
<websocket:mapping path="/hello" handler="socketHandler"/>
</websocket:handlers>
<bean class="MyWebSocketHandler" id="socketHandler"/>
也可以继承 AbstractWebSocketMessageBrokerConfigurer 并重写相应方法配置端点(还需要进行注入)
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}
然后就可以和网页通信了