SpringBoot搭建WebSocket初始化

news2024/11/18 1:45:03

1.java后端的maven添加websocket依赖

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

2.实例化ServerEndpointExporter对象,
这样才能自动调用@ServerEndpoint(“/test”)里面的方法

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
        return new ServerEndpointExporter();
    }
}

3.创建一个类,该类的功能是提供websocket服务

/**
 * websocket服务
 */
@Component
@ServerEndpoint("/test")
public class WebsocketServer{

    @OnOpen
    public void onOpen(Session session, EndpointConfig endpointConfig) {
        System.out.println("websocket已连接");
    }

    @OnClose
    public void onClose(Session session, CloseReason closeReason) {
        System.out.println("websocket已关闭");
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("连接错误"+throwable);
    }
    //发送
    @OnMessage
    public void onMessage(String message,Session session){
        System.out.println("接收到消息:" + message);

        try {
            session.getBasicRemote().sendText("回应: " + message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

前端测试发起请求连接websocket
创建了一个html,控制台输出结果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var ws=new WebSocket("ws://localhost:8080/test");
        ws.onopen=function(){
            console.log("连接成功");
            ws.send('6666');
        }
        ws.onclose=function(){
            console.log("连接关闭");
        }
        ws.onmessage=function(res){
            console.log(res);
        }
        ws.onerror=function(res){
            console.log(res);
        }
    </script>
</body>
</html>

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C++] 类与对象(中)类中六个默认成员函数(1)

1、类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 2、构造函数 2.1 构造函数的概念 我们这里来看看日期类的初始…

ESP32 LVGL:无法显示过大的GIF图片(修改VLGL RAM缓存大小)

文章目录 问题描述&#xff1a;问题解决更改LVGL RAM缓存大小看ESP32的RAM使用情况 参考链接 问题描述&#xff1a; 使用LVGL可显示64 * 64的GIF&#xff0c;但是却无法显示120*120的GIF。 问题解决 更改LVGL RAM缓存大小 分析原因&#xff1a;在用LVGL显示GIF图片时&#…

【JavaEE】Spring Boot - 项目的创建和使用

【JavaEE】Spring Boot 开发要点总结&#xff08;1&#xff09; 文章目录 【JavaEE】Spring Boot 开发要点总结&#xff08;1&#xff09;1. Spring Boot 的优点2. Spring Boot 项目创建2.1 下载安装插件2.2 创建项目过程2.3 加载项目2.4 启动项目2.5 删除一些没用的文件 3. Sp…

安全基础 --- html标签 + 编码(01)

html标签 &#xff08;1&#xff09;detail标签 <details>标签用来折叠内容&#xff0c;浏览器会折叠显示该标签的内容。 <1> 含义&#xff1a; <details> 这是一段解释文本。 </details> 用户点击这段文本&#xff0c;折叠的文本就会展开&#x…

MFC第二十六天 CRgn类简介与开发、封装CMemoryDC类并应用开发

文章目录 CRgn类简介与开发CRgn类简介CRgn类区域管理开发CRgn类区域管理与不规则形状的选取 封装CMemoryDC类并应用开发CMemoryDC.h封装CMemoryDC开发游戏透明动画CFlashDlg.hCFlashDlg.cpp 封装CMemoryDC开发游戏动画 附录四大窗口CDC派生类 CRgn类简介与开发 CRgn类简介 CR…

Meta开源Llama 2免费大语言模型,媲美ChatGPT,可在线试玩

Llama 2是Llama 1模型的升级版本,引入了一系列预训练和微调 LLM,参数量范围从7B到70B (7B、13B、70B)。其预训练模型比 Llama 1模型有了显著改进,包括训练数据的总词元数增加了 40%、上下文长度更长 (4k 词元),以及利用了分组查询注意力机制来加速 70B模型的推理! 但最激动…

PSO粒子群优化算法

PSO粒子群优化算法 算法思想matlab代码python代码 算法思想 粒子群算法&#xff08;Particle Swarm Optimization&#xff09; 优点: 1&#xff09;原理比较简单&#xff0c;实现容易&#xff0c;参数少。 缺点: 1&#xff09;易早熟收敛至局部最优、迭代后期收敛速度慢的…

【逗老师的PMP学习笔记】项目的运行环境

一、影响项目运行的因素 主要分两种因素 事业环境因素&#xff08;更多的是制约和限制因素&#xff09;组织过程资产&#xff08;可以借鉴的经验和知识&#xff09; 1、细说事业环境因素&#xff08;更多的是制约和限制因素&#xff09; 资源可用性 例如包括合同和采购制约…

代码随想录算法训练营第三十三天 | Leetcode随机抽题检测

Leetcode随机抽题检测 70 爬楼梯未看解答自己编写的青春版重点题解的代码日后复习重新编写 118 杨辉三角未看解答自己编写的青春版重点题解的代码日后复习重新编写 198 打家劫舍未看解答自己编写的青春版重点题解的代码日后复习重新编写 279 完全平方数未看解答自己编写的青春版…

WPF上位机7——MySql

MySql DML语句 db操作、表操作 字段的数据类型 修改表 表的数据操作 DQL语句 数据查询和去重查询 条件查询 模糊查询 聚合查询 分组查询 排序查询 分页查询 DCL语句 函数 字符串处理函数 数值函数 日期函数 流程函数 约束 外键约束 多表查询 内连接 外连接 自连接 子查询 列…

JavaScript-DOM

目录 DOM 访问节点 节点信息 操作节点 DOM DOM&#xff1a;Document Object Model&#xff08; 文档对象模型&#xff09; 访问节点 使用 getElement系列方法访问指定节点 getElementById()、getElementsByName()、getElementsByTagName()根据层次关系访问节点 节点属性 属…

面向对象程序三大特性一:继承(超详细)

目录 1.继承基本介绍 2.继承关系中的成员访问 2.1就近原则 2.2继承关系中的构造方法 3.super和this 4.代码块和构造方法的执行顺序 4.1在没有继承关 系时的执行顺序。 4.2继承关系上的执行顺序 5.protected的 范围 6.继承的本质分析(重要) 7.final 关键字 1.继承基本…

《动手学深度学习》-64注意力机制

沐神版《动手学深度学习》学习笔记&#xff0c;记录学习过程&#xff0c;详细的内容请大家购买书籍查阅。 b站视频链接 开源教程链接 注意力机制 生物学中的注意力提示 灵长类动物的视觉系统接受了大量的感官输入&#xff0c;这些感官输入远远超出了大脑所能够完全处理的能力…

vue 标题文字字数过长超出部分用...代替 动态显示

效果: 浏览器最大化: 浏览器缩小: 代码: html: <div class"title overflow">{{item.name}}</div> <div class"content overflow">{{item.content}}</div> css: .overflow {/* 一定要加宽度 */width: 90%;/* 文字的大小 */he…

台风来袭,这份避险防御指南一定收好

台风天气的到来&#xff0c;我们必须高度警惕&#xff01;大到暴雨、雷电、雷雨大风&#xff0c;甚至短时强降水等强对流天气&#xff0c;可能给我们的生活带来严重威胁。为了确保家人安全&#xff0c;让我们共同学习一些智慧防护措施&#xff0c;做好个人安全防范。定期关注天…

C++初阶之一篇文章让你掌握vector(理解和使用)

vector&#xff08;理解和使用&#xff09; 1.什么是vector&#xff1f;2.vector的使用2.1 vector构造函数2.2 vector迭代器&#xff08;Iterators&#xff09;函数2.2.1 begin()2.2.2 end()2.2.3 rbegin()2.2.4 rend()2.2.5 cbegin()、cend()、crbegin()和crend() C11 2.3 vec…

Java类集框架(二)

目录 1.Map&#xff08;常用子类 HashMap&#xff0c;LinkedHashMap&#xff0c;HashTable&#xff0c;TreeMap&#xff09; 2.Map的输出&#xff08;Map.Entry,iterator,foreach&#xff09; 3.数据结构 - 栈&#xff08;Stack&#xff09; 4.数据结构 - 队列&#xff08;Q…

485modbus转profinet网关连三菱变频器modbus通讯触摸屏监控

本案例介绍了如何通过485modbus转profinet网关连接威纶通与三菱变频器进行modbus通讯。485modbus转profinet网关提供了可靠的连接方式&#xff0c;使用户能够轻松地将不同类型的设备连接到同一网络中。通过使用这种网关&#xff0c;用户可以有效地管理和监控设备&#xff0c;从…

人工智能与物理学(软体机器人能量角度)的结合思考

前言 好久没有更新我的CSDN博客了&#xff0c;细细数下来已经有了16个月。在本科时期我主要研究嵌入式&#xff0c;研究生阶段对人工智能感兴趣&#xff0c;看了一些这方面的论文和视频&#xff0c;因此用博客记录了一下&#xff0c;后来因为要搞自己的研究方向&#xff0c;就…

使用Golang实现一套流程可配置,适用于广告、推荐系统的业务性框架——组合应用

在《使用Golang实现一套流程可配置&#xff0c;适用于广告、推荐系统的业务性框架——简单应用》中&#xff0c;我们看到了各种组合Handler的组件&#xff0c;如HandlerGroup和Layer。这些组件下面的子模块又是不同组件&#xff0c;比如LayerCenter的子组件是Layer。如果此时我…