springboot客户端 利用socket和springboot服务端连接,如何发送消息给服务端,和动态接受服务端消息,和访问服务端API,给个demo
时间: 2024-03-01 10:54:46 浏览: 145
Java开发案例-springboot-12-集成socket.io服务端和客户端-源代码+文档.rar
好的,以下是一个使用 Spring Boot 和 WebSocket 技术实现客户端与服务端连接的示例:
1. 创建 Spring Boot 项目,并添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建 WebSocket 配置类,用于配置 WebSocket 相关的 Bean:
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/my-websocket");
}
}
```
3. 创建 WebSocket 处理器类,用于处理客户端和服务端之间的消息:
```
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload(); // 获取客户端发送的消息
// 处理消息
session.sendMessage(new TextMessage("Hello, " + payload)); // 发送消息给客户端
}
}
```
4. 创建客户端类,用于发送和接收消息:
```
@Component
public class MyWebSocketClient extends WebSocketHandler {
private WebSocketSession session;
public void connect() throws Exception {
WebSocketClient client = new StandardWebSocketClient();
WebSocketHandler handler = this;
WebSocketRequest request = new WebSocketRequest("ws://localhost:8080/my-websocket");
session = client.doHandshake(handler, request).get();
}
public void sendMessage(String message) throws Exception {
session.sendMessage(new TextMessage(message));
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("WebSocket connected.");
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
System.out.println("Received message: " + message.getPayload());
}
}
```
5. 运行项目,并在客户端类中调用 `connect` 方法来连接服务端。连接成功后,可以使用 `sendMessage` 方法来发送消息给服务端。服务端处理完消息后,会将处理结果返回给客户端,并在客户端类中的 `handleTextMessage` 方法中输出。
6. 访问服务端 API,可以使用 RestTemplate 或 WebClient 等 HTTP 客户端库来发送 HTTP 请求,并在响应中获取服务端返回的数据。例如:
```
@RestController
public class MyController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
@PostMapping("/message")
public String handleMessage(@RequestBody String message) {
return "Received message: " + message;
}
}
```
这里使用 `@PostMapping` 注解来定义接口,客户端可以使用 RestTemplate 或 WebClient 等 HTTP 客户端库来发送 POST 请求,并将消息作为请求体发送到服务端。服务端处理完消息后,会将处理结果返回给客户端,在客户端中可以获取响应的数据。
阅读全文