Springboot 集成websocket

简介: Springboot 集成websocket

webSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信--浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

http协议和websocket协议对比


http是短连接


websocket是长连接


http通信是单向的,基于请求响应模式


websocket支持双向通信


http和websocket底层都是tcp连接


介绍


英语场景


视频弹幕 页面并没有刷新,但是弹幕源源不断


网页聊天


体育实况更新


第一步:导入依赖

打开你的Spring Boot项目,你需要在 pom.xml  文件中引入WebSocket相关的依赖。

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

第二步:配置WebSocket

Spring Boot 自带了对WebSocket的支持,你不需要太多手动配置,但如果需要自定义端点或者配置其他细节,可以创建一个配置类。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
 
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        // 配置消息代理,这里指定了"/app"前缀的频道将由控制器处理
        config.enableSimpleBroker("/topic");
        // "/app"前缀的消息将转发到带有@MessageMapping的方法
        config.setApplicationDestinationPrefixes("/app");
    }
 
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 注册WebSocket的入口点,并启用SockJS以兼容更多浏览器
        registry.addEndpoint("/ws").withSockJS();
    }
}

第三步:编写WebSocket Server端

创建一个WebSocket的消息处理器类,该类里包含的方法会处理客户端发来的消息和广播消息。

@Controller
public class MyWebSocketController {
 
    @MessageMapping("/chat")
    @SendTo("/topic/messages")
    public ChatMessage sendMessage(ChatMessage message) throws Exception {
        // 这里可以处理消息,例如保存到数据库、转换格式等
        // 然后返回一个消息对象,它会被发送到所有订阅了/topic/messages频道的客户端
        return new ChatMessage(message.getFrom(), message.getText(), LocalDateTime.now());
    }
}

第四步:客户端连接与消息发送接收

在客户端(通常是HTML+JavaScript页面),使用WebSocket库如SockJS和StompJS来连接到WebSocket服务器并发送和接收消息。

<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/stompjs@2.3.3/dist/stomp.min.js"></script>
 
<script>
    var socket = new SockJS('/ws');
    var stompClient = Stomp.over(socket);
 
    stompClient.connect({}, function(frame) {
        console.log('Connected: ' + frame);
        stompClient.subscribe('/topic/messages', function(messageOutput) {
            // 接收服务器推过来的消息并显示在页面上
            var message = JSON.parse(messageOutput.body);
            displayChatMessage(message);
        });
 
        // 发送消息到服务器
        $('#sendMessage').click(function () {
            var from = $('#from').val();
            var text = $('#text').val();
            stompClient.send("/app/chat", {}, JSON.stringify({from: from, text: text}));
        });
    });
</script>

以上就是一个非常基础的Spring Boot集成WebSocket的教程,涵盖了从服务器端配置到客户端消息处理的基本流程。实际应用中,你可能还需要处理更多的细节,比如用户身份验证、断线重连等。


目录
相关文章
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
641 0
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
480 0
|
11月前
|
前端开发
SpringBoot2.3.1集成Knife4j接口文档
SpringBoot2.3.1集成Knife4j接口文档
1123 44
|
10月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
651 3
|
10月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
867 0
第07课:Spring Boot集成Thymeleaf模板引擎
|
10月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
956 2
|
10月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
526 2
|
11月前
|
缓存 安全 Java
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
883 7
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
270 0