spring websocket做客户端 服务器

浅浅的花香味﹌ 2022-05-15 08:47 384阅读 0赞
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-websocket</artifactId>
  4. <version>5.0.8.RELEASE</version>
  5. </dependency>
  6. import org.springframework.boot.SpringApplication;
  7. import org.springframework.boot.autoconfigure.SpringBootApplication;
  8. import org.springframework.http.server.ServerHttpRequest;
  9. import org.springframework.http.server.ServerHttpResponse;
  10. import org.springframework.http.server.ServletServerHttpRequest;
  11. import org.springframework.stereotype.Component;
  12. import org.springframework.web.socket.TextMessage;
  13. import org.springframework.web.socket.WebSocketHandler;
  14. import org.springframework.web.socket.WebSocketSession;
  15. import org.springframework.web.socket.config.annotation.EnableWebSocket;
  16. import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
  17. import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
  18. import org.springframework.web.socket.handler.TextWebSocketHandler;
  19. import org.springframework.web.socket.server.HandshakeInterceptor;
  20. import java.util.Map;
  21. @SpringBootApplication
  22. public class MyWebSocketServer {
  23. public static void main(String[] args) {
  24. SpringApplication.run(MyWebSocketServer.class, args);
  25. }
  26. @Component
  27. @EnableWebSocket
  28. private static class Config implements WebSocketConfigurer {
  29. @Override
  30. public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
  31. registry.addHandler(new MyHandler(), "/ws").setAllowedOrigins("*")
  32. .addInterceptors(new MyHandshakeInterceptor());
  33. }
  34. }
  35. private static class MyHandler extends TextWebSocketHandler {
  36. @Override
  37. public void afterConnectionEstablished(WebSocketSession session) throws Exception {
  38. System.out.println(session.getAttributes().get("collector"));
  39. super.afterConnectionEstablished(session);
  40. }
  41. @Override
  42. protected void handleTextMessage(WebSocketSession session, TextMessage message)
  43. throws Exception {
  44. System.out.println(message.getPayload());
  45. session.sendMessage(new TextMessage("reply.................." + message.getPayload()));
  46. super.handleTextMessage(session, message);
  47. }
  48. }
  49. private static class MyHandshakeInterceptor implements HandshakeInterceptor {
  50. @Override
  51. public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
  52. WebSocketHandler wsHandler, Map<String, Object> attributes)
  53. throws Exception {
  54. String collector = ((ServletServerHttpRequest) request).getServletRequest().getParameter("collector");
  55. if (Strings.isNullOrEmpty(collector)) {
  56. return false;
  57. } else {
  58. attributes.put("collector", collector);
  59. return true;
  60. }
  61. }
  62. @Override
  63. public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
  64. WebSocketHandler wsHandler, Exception exception) {
  65. }
  66. }
  67. }

客户端:

  1. import org.springframework.web.socket.TextMessage;
  2. import org.springframework.web.socket.WebSocketSession;
  3. import org.springframework.web.socket.client.WebSocketConnectionManager;
  4. import org.springframework.web.socket.client.standard.StandardWebSocketClient;
  5. import org.springframework.web.socket.handler.TextWebSocketHandler;
  6. import java.io.IOException;
  7. public class MyWebSocketClient {
  8. private static final String WS_URI = "ws://localhost:8080/ws?collector=123";
  9. public static void main(String[] args) throws IOException, InterruptedException {
  10. StandardWebSocketClient client = new StandardWebSocketClient();
  11. WebSocketConnectionManager manager = new WebSocketConnectionManager(client, new MyHandler(), WS_URI);
  12. manager.start();
  13. Thread.sleep(10000);
  14. }
  15. private static class MyHandler extends TextWebSocketHandler {
  16. @Override
  17. public void afterConnectionEstablished(WebSocketSession session) throws Exception {
  18. System.out.println("connected...........");
  19. session.sendMessage(new TextMessage("hello, web socket"));
  20. super.afterConnectionEstablished(session);
  21. }
  22. @Override
  23. protected void handleTextMessage(WebSocketSession session, TextMessage message)
  24. throws Exception {
  25. System.out.println("receive: " + message.getPayload());
  26. super.handleTextMessage(session, message);
  27. }
  28. }
  29. }

发表评论

表情:
评论列表 (有 0 条评论,384人围观)

还没有评论,来说两句吧...

相关阅读