程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 后端手册

  • 前端手册

  • 组件文档

  • 数据库分析

  • 集成插件

    • 集成 Docker 实现一键部署
    • 升级 Spring Boot 到 3.x 版本
    • 集成 Ehcache 实现本地缓存切换
    • 集成 WebSocket 实现实时通信
      • 1. 添加 WebSocket 依赖
      • 2. 配置匿名访问(可选)
      • 3. 下载插件相关包和代码实现
      • 4. 测试验证 WebSocket 功能
    • 集成 Electron 实现桌面应用程序
    • 集成 Atomikos 实现分布式事务
    • 集成 MinIO 实现分布式文件存储
    • 集成 Easy-ES 实现分布式全文检索
    • 使用 `localStorage` 代替 `cookie`
    • 使用 Undertow 替代 Tomcat 容器
    • 集成 Actuator 实现优雅关闭应用
    • 集成 AJ-Captcha 实现滑块验证码
    • 集成 Sharding-JDBC 实现分库分表
    • 集成 JustAuth 实现第三方授权登录
    • 集成 `watermark-dom` 实现页面水印
    • 集成 MyBatis-Plus 实现 MyBatis 增强
    • 集成 EasyExcel 实现 Excel 表格增强
    • 集成 Knife4j 实现 Swagger 文档增强
    • 集成 Redisson 实现 Redis 分布式锁
    • 集成 IP2Region 实现离线 IP 地址定位
    • 42集成 JSEncrypt 实现密码加密传输
    • 集成 HttpClient 实现 HTTP 接口增强
    • 集成 Druid 实现数据库密码加密功能
    • 集成 Browscap 实现用户代理解析
    • 集成 Dynamic-DataSource 实现多数据源增强
  • 若依框架
  • 集成插件
scholar
2024-08-31
目录

集成 WebSocket 实现实时通信

# 集成 WebSocket 实现实时通信

WebSocket 是一种非常适合实时通信的协议,它能够在客户端和服务器之间建立持久性连接,实现双向数据传输。


# 1. 添加 WebSocket 依赖

首先,需要在 ruoyi-framework/pom.xml 文件中添加 WebSocket 的依赖,以启用 Spring Boot 对 WebSocket 的支持。

<!-- Spring Boot WebSocket 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
1
2
3
4
5

此依赖将为项目提供 WebSocket 的相关支持功能。


# 2. 配置匿名访问(可选)

如果需要允许未登录的用户访问 WebSocket,可以在 SecurityConfig.java 中配置匿名访问权限。

// SecurityConfig.java

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
        // 其他配置...
        .authorizeRequests()
        .antMatchers("/websocket/**").permitAll()  // 允许匿名访问 WebSocket 连接
        .anyRequest().authenticated();
}
1
2
3
4
5
6
7
8
9
10

这段配置允许所有用户,无论是否登录,都可以访问 /websocket/** 路径下的 WebSocket 连接。


# 3. 下载插件相关包和代码实现

为了简化 WebSocket 的集成过程,相关的代码和配置已经打包在插件中。请下载并解压,将内容覆盖到项目中对应的文件夹。

下载链接: 集成 WebSocket 实现实时通信 (opens new window)
提取码: mjs7


# 4. 测试验证 WebSocket 功能

在完成以上步骤后,可以通过将 websocket.vue 的内容复制到 login.vue 中进行简单的测试。以下是一些示例代码片段,展示了如何在前端使用 WebSocket。

<template>
  <div>
    <button @click="connect">连接 WebSocket</button>
    <input v-model="message" placeholder="输入消息"/>
    <button @click="sendMessage">发送消息</button>
    <p>收到的消息:{{ receivedMessage }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      socket: null,
      message: '',
      receivedMessage: ''
    };
  },
  methods: {
    connect() {
      this.socket = new WebSocket("ws://localhost:8080/websocket");

      this.socket.onopen = () => {
        console.log("WebSocket 连接成功");
      };

      this.socket.onmessage = (event) => {
        this.receivedMessage = event.data;
        console.log("收到消息:", event.data);
      };

      this.socket.onclose = () => {
        console.log("WebSocket 连接关闭");
      };

      this.socket.onerror = (error) => {
        console.log("WebSocket 连接错误:", error);
      };
    },
    sendMessage() {
      if (this.socket && this.socket.readyState === WebSocket.OPEN) {
        this.socket.send(this.message);
        console.log("发送消息:", this.message);
      } else {
        console.log("WebSocket 连接未建立");
      }
    }
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

通过上述代码,你可以在页面中创建一个 WebSocket 连接,输入消息并发送给服务器,实时接收并显示服务器返回的消息。


注意事项

  • WebSocket 服务器端配置: 在服务器端,需要编写相应的 WebSocket 处理类,处理客户端的连接、消息接收和发送等逻辑。
  • 跨域问题: 如果前后端分离且不在同一个域下,可能需要处理 WebSocket 的跨域问题。
  • 资源清理: 确保在关闭连接时,正确清理 WebSocket 资源,以免造成内存泄漏或连接占用。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
集成 Ehcache 实现本地缓存切换
集成 Electron 实现桌面应用程序

← 集成 Ehcache 实现本地缓存切换 集成 Electron 实现桌面应用程序→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式