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的教程,涵盖了从服务器端配置到客户端消息处理的基本流程。实际应用中,你可能还需要处理更多的细节,比如用户身份验证、断线重连等。


目录
相关文章
|
4天前
|
Prometheus Cloud Native Java
springboot集成prometheus异常处理
springboot集成prometheus异常处理
11 2
|
7天前
|
移动开发 前端开发 JavaScript
|
7天前
|
网络协议 JavaScript Java
|
11天前
|
Java Spring
解决Springboot集成ElasticSearch 报错:A bean with that name has already been defined in null and overriding
解决Springboot集成ElasticSearch 报错:A bean with that name has already been defined in null and overriding
|
14天前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
50 4
|
1月前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
该文是一系列关于从零开始手写实现 Apache Tomcat 的教程概述。作者希望通过亲自动手实践理解 Tomcat 的核心机制。文章讨论了 Spring Boot 如何实现直接通过 `main` 方法启动,Spring 与 Tomcat 容器的集成方式,以及两者生命周期的同步原理。文中还提出了实现 Tomcat 的启发,强调在设计启动流程时确保资源的正确加载和初始化。最后提到了一个名为 mini-cat(嗅虎)的简易 Tomcat 实现项目,开源于 [GitHub](https://github.com/houbb/minicat)。
|
16天前
|
API Java 监控
SpringBoot基于OpenAPI3的接口文档管理快速集成和使用
本文主要简单介绍SpringCloud2023中进行接口文档管理,方便前后端开发和文档维护。文档管理工具基于开源的knife4j封装的openapi3。
48 3
|
1月前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
本文探讨了Spring Boot如何实现像普通Java程序一样通过main方法启动,关键在于Spring Boot的自动配置、内嵌Servlet容器(如Tomcat)以及`SpringApplication`类。Spring与Tomcat集成有两种方式:独立模式和嵌入式模式,两者通过Servlet规范、Spring MVC协同工作。Spring和Tomcat的生命周期同步涉及启动、运行和关闭阶段,通过事件和监听器实现。文章鼓励读者从实现Tomcat中学习资源管理和生命周期管理。此外,推荐了Netty权威指南系列文章,并提到了一个名为mini-cat的简易Tomcat实现项目。
|
21天前
|
消息中间件 JSON Java
SpringBoot集成和使用消息队列
SpringBoot集成和使用消息队列
|
1月前
|
Java 数据库连接 数据安全/隐私保护
springBoot集成token认证,最全Java面试知识点梳理
springBoot集成token认证,最全Java面试知识点梳理

热门文章

最新文章