springboot websocket接收json对象

springboot websocket接收json对象

在Spring Boot中使用WebSocket接收JSON对象,你可以使用@Controller注解一个类,并使用@MessageMapping注解方法来处理WebSocket消息。你还需要配置一个WebSocketMessageBrokerConfigurer实现来启用WebSocket。

以下是一个简单的例子:

  1. 添加Maven依赖(如果你使用的是Gradle,请相应地调整):

 
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

  

 
  1. 配置WebSocket:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }
 
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").withSockJS();
    }
}
  1. 创建一个控制器来处理WebSocket消息:

 
@Controller
public class WebSocketController {
 
@MessageMapping("/someEndpoint")
@SendTo("/topic/messages")
public SomeObject processMessage(SomeObject message) {
// 处理接收到的JSON对象
System.out.println("Received: " + message);
// 返回的消息将被发送到 /topic/messages
return message;
}
}

  

  1. 前端JavaScript代码连接到WebSocket并接收消息:

 
var socket = new SockJS('/ws');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    console.log('Connected: ' + frame);
    stompClient.subscribe('/topic/messages', function(message) {
        // 处理接收到的消息
        console.log(JSON.parse(message.body).content);
    });
});

  

确保你的SomeObject类有一个默认的无参构造函数,并且所有的字段都有对应的getter和setter。Spring将自动使用Jackson库将JSON对象反序列化为SomeObject实例。

注意: 最后需要在鉴权类中添加白名单(SecurityConfig.java)

 requests.antMatchers("/login", "/register", "/captchaImage", "/ws/**").permitAll()

  

 

 

posted @ 2024-07-30 14:46  一木人生  阅读(152)  评论(0)    收藏  举报