c语言编程笔录

首页 >   > 笔记大全

笔记大全

SpringBoot怎么整合WebSocket实现后端向前端发送消息

更新时间:2023-12-17

1. 引入WebSocket依赖

首先,我们需要在POM文件中引入WebSocket依赖和Web依赖。

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

2. 配置WebSocket

接下来我们需要配置WebSocket。创建一个WebSocket配置类,在其中注册一个WebSocket处理器并设置相关的端点。

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
 
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");
    }
 
    @Bean
    public WebSocketHandler myHandler() {
        return new MyHandler();
    }
}

3.编写WebSocket处理器

我们需要编写WebSocket处理器。创建一个WebSocket处理器类并在其中编写相关的代码来处理WebSocket连接。

public class MyHandler extends TextWebSocketHandler {
    private WebSocketSession session;
 
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        this.session = session;
    }
 
    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message) throws IOException {
        String messagePayload = message.getPayload();
        session.sendMessage(new TextMessage("Received message: " + messagePayload));
    }
}

4.通过WebSocket向客户端发送消息

现在,我们已经设置好了WebSocket。接下来,我们需要编写代码来向客户端发送消息。在控制器类中,我们可以注入WebSocketHandler并使用它来向所有连接的客户端广播消息。

@Controller
public class MyController {
    private final WebSocketHandler myHandler;
 
    @Autowired
    public MyController(WebSocketHandler myHandler) {
        this.myHandler = myHandler;
    }
 
    @RequestMapping("/send")
    @ResponseBody
    public String sendMessage() {
        myHandler.broadcast(new TextMessage("Hello, everyone!"));
        return "Message Sent!";
    }
}
总结:以上就是使用SpringBoot整合WebSocket实现后端向前端发送消息的所有步骤和代码示例。通过以上代码可以看到,整合WebSocket的过程相对简单,并且支持广播形式的消息发送,只需在WebSocket处理器中调用broadcast方法即可。