spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入

这篇具有很好参考价值的文章主要介绍了spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
🥭本文内容:spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入

-----------------------------------------------------       目录       ----------------------------------------------------------

目录

一、背景

二、导入实现

1. 后端:pom文件中导入依赖

2.后端:编写后端配置类

3. 后端:编写消息容器与消息处理类

4. 前端:VUE3测试代码

(1) 下载依赖

(2)将测试代码粘贴到空的.vue文件中

4. 测试连接网站:在线网址测试

三、 结果展示


---------------------------------------------------------------------------------------------------------------------------------

一、背景

        最近在项目中想实现实时性比较强的功能,在网上搜索之后发现,推荐websocket实现的比较多,然后也发现spring有对websocket进行包装的类,所以想使用websocket。

二、导入实现

1. 后端:pom文件中导入依赖

        <!--        WebSocket代码依赖          -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

2.后端:编写后端配置类

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 注册WebSocket处理器和端点
        registry.addHandler(new WebSocketHandler(), "/websocket")   // 注册WebSocket处理器,指定处理路径
                .setAllowedOrigins("*");    // 设置允许的跨域origin(可选)
    }

}

3. 后端:编写消息容器与消息处理类

package com.ruoyi.schooltimetable.websocket;


import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

import java.util.ArrayList;
import java.util.List;

@Component
public class WebSocketHandler extends TextWebSocketHandler {

    private List<WebSocketSession> sessions = new ArrayList<>();

    public void add(WebSocketSession session) {
        sessions.add(session);
    }

    public void remove(WebSocketSession session) {
        sessions.remove(session);
    }

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 当 WebSocket 连接建立成功后执行该方法
        System.err.println("------------   连接完成   ------------");

        // 保存 WebSocketSession 到某个容器中,方便后续处理
        sessions.add(session);

        // 发送欢迎消息给客户端
        String welcomeMessage = "欢迎连接WebSocket服务器!";
        TextMessage textMessage = new TextMessage(welcomeMessage);
        session.sendMessage(textMessage);
    }

    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        // 当接收到客户端发送的WebSocket消息时执行该方法

        // 获取消息内容
        String receivedMessage = message.getPayload().toString();

        // 处理消息,如解析消息内容、发送响应等

        //

        // 发送响应给客户端
        String response = "收到您的消息:" + receivedMessage;
        TextMessage textMessage = new TextMessage(response);
        session.sendMessage(textMessage);
    }

    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        // 当WebSocket传输发生错误时执行该方法


        // 处理错误,如记录日志、关闭连接等


        //


        // 关闭WebSocket连接
        session.close();
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // 当WebSocket连接关闭后执行该方法
        System.err.println("---------------   断开成功   ---------------");
        // 清理操作,如释放资源、通知其他用户等

        // 从容器中移除WebSocketSession
        sessions.remove(session);
    }
}

如果是在springsecurity中进行配置,需要在SpringSecurity配置类中对websocket的接口进行放行,不然会连接失败。位置:

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入,知识分享,知识备份,新手常见问题,websocket,spring boot,网络协议

4. 前端:VUE3测试代码

(1) 下载依赖

执行:

npm install websocket

(2)将测试代码粘贴到空的.vue文件中

<template>
  <div>
    WebSocket Example
    <button @click="connect">Connect</button>
    <button @click="disconnect">Disconnect</button>
    <button @click="sendMessage">Send Message</button>
  </div>
</template>

<script>
// import { ref } from 'vue';

export default {
  name: 'WebSocketExample',
  data() {
    return {
      socket: null,
      message: '',
      receivedMessage: ''
    };
  },
  methods: {
    connect() {
      if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {
        alert('111')
        this.socket = new WebSocket('ws://localhost:8095/websocket');
        this.socket.onopen = () => {
          alert('WebSocket connected')
          console.log('WebSocket connected');
        };
        this.socket.onmessage = (event) => {
          this.receivedMessage = event.data;
        };
        this.socket.onclose = () => {
          console.log('WebSocket disconnected');
        };
      }
    },
    disconnect() {
      if (this.socket && this.socket.readyState === WebSocket.OPEN) {
        this.socket.close();
      }
    },
    sendMessage() {
      if (this.socket && this.socket.readyState === WebSocket.OPEN) {
        this.socket.send(this.message);
      }
    }
  }
};
</script>

4. 测试连接网站:在线网址测试

测试网址:

Websocket在线测试-Websocket接口测试-Websocket模拟请求工具Websocket模拟请求工具:在线Websocket测试工具,Websocket接口测试,外网内网通用Websocket请求测试,内网测试环境填入内网服务端IP和端口即可,在线模拟Websocket请求在线工具http://www.yunjson.com/websocket/

三、 结果展示

  • 在VUE中测试连接:·spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入,知识分享,知识备份,新手常见问题,websocket,spring boot,网络协议
  • 在测试网址中测试连接:

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入,知识分享,知识备份,新手常见问题,websocket,spring boot,网络协议

  • 后端控制台的显示:

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入,知识分享,知识备份,新手常见问题,websocket,spring boot,网络协议

最后,

有问题可以打在评论区,希望文章对你有所帮助...!文章来源地址https://www.toymoban.com/news/detail-610157.html

到了这里,关于spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebSocket和SpringSecurity的学习记录

    1. WebSocket 基础概念 什么是 WebSocket? WebSocket 是一种网络通信协议,提供了在单个 TCP 连接上进行全双工通信的方式。\\\"全双工\\\"意味着客户端和服务器可以同时发送和接收信息,这与传统的 HTTP 请求不同,后者是一种半双工通信方式(即一次只能进行一个请求或响应)。 WebSock

    2024年01月21日
    浏览(25)
  • spring boot学习第六篇:SpringBoot 集成WebSocket详解

    1、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2、为什么需要WebSocket HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。 无状态:每次连

    2024年01月21日
    浏览(40)
  • SpringSecurity整合WebSocket并携带token

    目的 导入SpringSecurity的SpringBoot项目,在连接WebSocket时进行token校验 实现 SpringBoot整合Websocket的相关知识就不过多赘述,本文主要介绍WebSocket权限校验相关 1. 前端 WebSocket连接 windowTag是生成的随机窗口唯一标识符,token是用户登录后生成的令牌token 当前端发起WebSocket连接请求时

    2024年02月04日
    浏览(24)
  • SpringSecurity完整认证流程(包含自定义页面和自定义登录逻辑)

    认证基本流程图: 1. 用户发起表单登录请求后,首先进入UsernamePasswordAuthenticationFilter ​ 在 UsernamePasswordAuthenticationFilter 中根据用户输入的用户名、密码构建了 UsernamePasswordAuthenticationToken,并将其交给 AuthenticationManager 来进行认证处理。 ​ AuthenticationManager 本身不包含认证逻辑

    2024年01月16日
    浏览(32)
  • Spring Boot进阶(48):【实战教程】SpringBoot集成WebSocket轻松实现实时消息推送

            WebSocket是一种新型的通信协议,它可以在客户端与服务器端之间实现双向通信,具有低延迟、高效性等特点,适用于实时通信场景。在SpringBoot应用中,集成WebSocket可以方便地实现实时通信功能,如即时聊天、实时数据传输等。         本文将介绍如何在Sprin

    2024年02月09日
    浏览(38)
  • 基于SpringBoot+WebSocket+Spring Task的前后端分离外卖项目-订单管理(十七)

    1.1 介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位 :定时任务框架 作用 :定时自动执行某段Java代码 应用场景: 1). 信用卡每月还款提醒 2). 银行贷款每月还款提醒 3). 火车票售票系统处理未支付订单 4). 入职纪念日为用户发

    2024年02月21日
    浏览(38)
  • Spring Boot进阶(48):SpringBoot之集成WebSocket及使用说明 | 超级详细,建议收藏

            WebSocket是一种新型的通信协议,它可以在客户端与服务器端之间实现双向通信,具有低延迟、高效性等特点,适用于实时通信场景。在SpringBoot应用中,集成WebSocket可以方便地实现实时通信功能,如即时聊天、实时数据传输等。         本文将介绍如何在Sprin

    2024年02月16日
    浏览(40)
  • Spring Boot进阶(49):SpringBoot之集成WebSocket实现前后端通信 | 超级详细,建议收藏

            在上一期,我对WebSocket进行了基础及理论知识普及学习,WebSocket是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。Spring Boot作为一款微服务框架,也提供了轻量级的WebSocket集成支持,本文将介绍如何在Spring Boot项

    2024年02月14日
    浏览(28)
  • 【Spring实战项目】SpringBoot3整合WebSocket+拦截器实现登录验证!从原理到实战

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年04月17日
    浏览(40)
  • Spring Boot进阶(49):实时通信不再是梦想,SpringBoot+WebSocket助你轻松实现前后端即时通讯!

            在上一期,我对WebSocket进行了基础及理论知识普及学习,WebSocket是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。Spring Boot作为一款微服务框架,也提供了轻量级的WebSocket集成支持,本文将介绍如何在Spring Boot项

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包