springboot 通过websocket发送对象
时间: 2023-07-01 15:08:21 浏览: 91
在使用 Spring Boot 发送 WebSocket 消息时,可以通过将对象序列化为 JSON 字符串后再发送。以下是一个简单的示例代码:
1. 创建一个消息类,用于将要发送的对象进行封装:
```java
public class MyMessage {
private String content;
// getter and setter
}
```
2. 创建一个 WebSocket 处理器,用于处理 WebSocket 连接和消息:
```java
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 将接收到的消息反序列化为 MyMessage 对象
MyMessage myMessage = new ObjectMapper().readValue(message.getPayload(), MyMessage.class);
// 处理消息
// ...
// 将处理后的结果序列化为 JSON 字符串后发送到客户端
String resultJson = new ObjectMapper().writeValueAsString(result);
session.sendMessage(new TextMessage(resultJson));
}
}
```
3. 在 Spring Boot 应用中配置 WebSocket:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyWebSocketHandler myWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/my-websocket").withSockJS();
}
}
```
4. 在客户端 JavaScript 中发送带有对象的 WebSocket 消息:
```javascript
var myMessage = { content: "hello world" };
var jsonStr = JSON.stringify(myMessage);
var socket = new SockJS('/my-websocket');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
stompClient.send("/app/my-websocket", {}, jsonStr);
});
```
阅读全文