spring websocket做客户端 服务器
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
import java.util.Map;
@SpringBootApplication
public class MyWebSocketServer {
public static void main(String[] args) {
SpringApplication.run(MyWebSocketServer.class, args);
}
@Component
@EnableWebSocket
private static class Config implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyHandler(), "/ws").setAllowedOrigins("*")
.addInterceptors(new MyHandshakeInterceptor());
}
}
private static class MyHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println(session.getAttributes().get("collector"));
super.afterConnectionEstablished(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message)
throws Exception {
System.out.println(message.getPayload());
session.sendMessage(new TextMessage("reply.................." + message.getPayload()));
super.handleTextMessage(session, message);
}
}
private static class MyHandshakeInterceptor implements HandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes)
throws Exception {
String collector = ((ServletServerHttpRequest) request).getServletRequest().getParameter("collector");
if (Strings.isNullOrEmpty(collector)) {
return false;
} else {
attributes.put("collector", collector);
return true;
}
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception) {
}
}
}
客户端:
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.client.WebSocketConnectionManager;
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import java.io.IOException;
public class MyWebSocketClient {
private static final String WS_URI = "ws://localhost:8080/ws?collector=123";
public static void main(String[] args) throws IOException, InterruptedException {
StandardWebSocketClient client = new StandardWebSocketClient();
WebSocketConnectionManager manager = new WebSocketConnectionManager(client, new MyHandler(), WS_URI);
manager.start();
Thread.sleep(10000);
}
private static class MyHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("connected...........");
session.sendMessage(new TextMessage("hello, web socket"));
super.afterConnectionEstablished(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message)
throws Exception {
System.out.println("receive: " + message.getPayload());
super.handleTextMessage(session, message);
}
}
}
还没有评论,来说两句吧...