springboot整合websocket

 

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

uniapp微信小程序面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。

文末获取联系精彩专栏推荐订阅 不然下次找不到哟

Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!

2

在 Spring Boot 中整合 WebSocket 非常简单,可以通过 spring-boot-starter-websocket 依赖快速实现。以下是详细步骤和代码示例:


1. 添加依赖

在 pom.xml 中引入 WebSocket 支持:


    org.springframework.boot
    spring-boot-starter-websocket

运行 HTML


2. 配置 WebSocket

创建一个配置类启用 WebSocket,并注册端点:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myWebSocketHandler(), "/ws")
                .setAllowedOrigins("*"); // 允许跨域
    }

    @Bean
    public WebSocketHandler myWebSocketHandler() {
        return new MyWebSocketHandler();
    }
}

3. 实现 WebSocket 处理器

自定义处理器,处理连接、消息、关闭等事件:

import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

public class MyWebSocketHandler extends TextWebSocketHandler {

    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        System.out.println("连接建立: " + session.getId());
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) {
        String payload = message.getPayload();
        System.out.println("收到消息: " + payload);

        // 回复客户端
        session.sendMessage(new TextMessage("Server回应: " + payload));
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
        System.out.println("连接关闭: " + session.getId());
    }
}

4. 前端连接 WebSocket

通过 JavaScript 连接后端 WebSocket 服务:




    
    
    

运行 HTML


5. 进阶功能

(1)广播消息(群发)

使用 SimpMessagingTemplate(需启用STOMP协议):

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;

@Component
public class WebSocketService {

    @Autowired
    private SimpMessagingTemplate messagingTemplate;

    public void broadcast(String message) {
        messagingTemplate.convertAndSend("/topic/messages", message);
    }
}
(2)启用 STOMP 协议

修改配置类支持 STOMP:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/stomp").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }
}
(3)处理二进制消息

继承 BinaryWebSocketHandler

public class MyBinaryHandler extends BinaryWebSocketHandler {
    @Override
    protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) {
        ByteBuffer payload = message.getPayload();
        // 处理二进制数据(如图片、文件)
    }
}

6. 测试与调试

  • 测试工具:使用 WebSocket Online Tester 或 Postman(新版支持WebSocket)。

  • 日志排查:检查 WebSocketSession 的开启、关闭和异常事件。


7. 注意事项

  1. 跨域问题

    • 通过 .setAllowedOrigins("*") 允许跨域(生产环境应限制域名)。

  2. 心跳保活

    • 客户端需定时发送心跳(如 ping/pong)防止连接超时。

  3. 集群部署

    • 多实例时需借助 Redis 或 RabbitMQ 广播消息(参考 @EnableRedisWebSocketMessageBroker)。


完整项目结构

src/
├── main/
│   ├── java/
│   │   └── com/example/
│   │       ├── config/WebSocketConfig.java
│   │       ├── handler/MyWebSocketHandler.java
│   │       └── Application.java
│   └── resources/
│       └── static/index.html

通过以上步骤,Spring Boot 即可快速整合 WebSocket,实现实时通信功能。根据需求选择原生 WebSocket 或 STOMP 协议扩展功能。

3

你可能感兴趣的:(Java,spring,boot,websocket,后端)