springboot 整合 websocket

  1. 添加 websocket 依赖
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>
  1. 启用Springboot对WebSocket的支持
package com.vazquez.k8sclient.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;/*** @Description* @Author vazquez* @DATE 2024/4/9 18:45*/@Configuration
public class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
}
  1. 核心配置:WebSocketServer

因为 WebSocket 是类似客户端服务端的形式(采用 ws 协议),那么这里的 WebSocketServer 其实就相当于一个 ws 协议的 Controller

package com.vazquez.k8sclient.websocket;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;/*** @Description* @Author vazquez* @DATE 2024/4/9 18:45*/@Slf4j
@Service
@ServerEndpoint("/api/websocket/{sid}")
public class WebSocketServer {//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。private static int onlineCount = 0;//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();//与某个客户端的连接会话,需要通过它来给客户端发送数据private Session session;//接收sidprivate String sid = "";/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session, @PathParam("sid") String sid) {this.session = session;webSocketSet.add(this

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

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

相关文章

校园通用型发生网络安全事件解决方案

已知校园多教学楼、多教学机房、非标网络机房缺乏防护设备、检测设备、安全保护软件(杀软) 切断所有外网&#xff0c;断网处理!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 部署路由系统可选择爱快、routeros、openwrt。等。可将日志上传到日志分析系统。《这项非必要的》 部署开源防火…

电商用户行为数据分析

本文针对淘宝app的运营数据&#xff0c;以行业常见指标对用户行为进行分析&#xff0c;包括UV、PV、新增用户分析、漏斗流失分析、留存分析、用户价值分析、复购分析等内容。本文使用的分析工具以MySQL为主&#xff0c;涉及分组汇总&#xff0c;引用变量&#xff0c;视图&#…

视频评论ID提取工具|视频关键词评论批量采集软件

视频评论ID提取工具&#xff1a;批量抓取视频评论 视频评论ID提取工具是一款功能强大的软件&#xff0c;可以帮助您批量抓取视频视频下的评论信息。通过输入关键词和评论监控词&#xff0c;即可进行评论的抓取&#xff0c;并提供评论昵称、评论日期、评论内容、命中关键词以及所…

内存分页分段

前言 在段式内存中&#xff0c;当申请内存的时候就划分一块内存给它&#xff0c;假如一个空间有4096MB大小内存&#xff0c;实际使用了3000MB&#xff0c;假如想运行一个程序是1024MB大小的看起来是能满足&#xff0c;但是数据段或者代码段对于内存的要求必须是连续了&#xf…

【Java面试题】JVM(26道)

文章目录 JVM面试题基础1.什么是JVM&#xff1f;2.JVM的组织架构&#xff1f; 内存管理3.JVM的内存区域是什么&#xff1f;3.1堆3.2方法区3.3程序计数器3.4Java虚拟机栈3.5本地方法栈 4.堆和栈的区别是什么&#xff1f;5.JDK1.6、1.7、1.8内存区域的变化&#xff1f;6.内存泄露…

Python学习入门(1)——基础语句(二)

14. 迭代器和迭代协议 在Python中&#xff0c;迭代器是支持迭代操作的对象&#xff0c;即它们可以一次返回其成员中的一个。任何实现了 __iter__() 和 __next__() 方法的对象都是迭代器。 class Count:def __init__(self, low, high):self.current lowself.high highdef __i…

tailwindcss在manoca在线编辑智能感知

推荐一下monaco-tailwindcss库&#xff0c;它实现在monaco-editor网页在线编辑器中对tailwindcss的智能感知提示&#xff0c;在利用tailwindcss实现html效果布局。非常的方便。 生成CSS

7/8电源连接器航空插头端子

概述 7/8电源连接器是一种工业电源连接器的规格型号之一&#xff0c;常见于工业领域的电力传输和连接应用。它的名称中的“7/8”代表连接器插头的直径尺寸&#xff0c;通常为7/8英寸。这种类型的连接器通常用于较大电流传输和较高功率设备的连接&#xff0c;具有较大的电流承载…

Java 中文官方教程 2022 版(三十九)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html XPath 如何工作 原文&#xff1a;docs.oracle.com/javase/tutorial/jaxp/xslt/xpath.html XPath 规范是各种规范的基础&#xff0c;包括 XSLT 和链接/寻址规范&#xff0c;如XPointer。因此&#xff0c;对…

Ubuntu系统 - 使用不同的libssl库

1 ubuntu-20.04.2.0-desktop-amd64 - 依赖libssl1.1 $ readelf -d mainDynamic section at offset 0x2d60 contains 29 entries:Tag Type Name/Value0x0000000000000001 (NEEDED) Shared library: [libssl.so.1.1]0x0000000000000…

【Java-TesseractOCR】通过Java实现OCR

通过Java实现OCR 一、TesseractOCR二、引入pom训练集下载地址三、引入训练集三、使用 一、TesseractOCR 本文使用的是TesseractOCR进行识别 二、引入pom <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId&…

多态——C++

这里写目录标题 衔接继承总结继承和组合白箱复用黑箱复用 多态的概念多态的定义以及实现虚函数重写的两个例外协变面试题析构函数的重写 finalvoerride重载隐藏(重定义)重写(覆盖)抽象类什么是抽象类&#xff1f; 实现继承和接口继承多态的原理虚函数表 那多态的调用是怎么实现…

从零开始HashMap

目录 1.HashMap的数据结构 2.put&#xff08;&#xff09;流程 2.1了解扩容机制 2.2扩容三个地方 2.3存入数据步骤 3.HashMap和Hashtable的区别 4.HashMap线程安全的解决办法 4.1Hashtable 4.2Collections 4.3ConcurrentHashMap 线程安全实现机制 1.HashMap的数据结…

14届蓝桥杯 C/C++ B组 T6 岛屿个数 (BFS,FloodFill,填色)

首先拿到这道题不要想着去直接判断环里面的岛屿&#xff0c;这样太困难了&#xff0c;我们可以使用之前做过的题的经验&#xff0c;在输入加入一圈海水&#xff0c;然后从(0,0)点开始BFS&#xff0c;这里进行八向搜索&#xff0c;搜到的0全部都染色成2&#xff0c;假如2能够蔓延…

Vue项目打包配置生产环境去掉console.log语句的方法

一、Vue2项目 使用webpack内置的 terser 工具&#xff0c;在vue.config.js文件加上相应的配置即可。 二、Vue3项目 同样是使用 terser 工具&#xff0c;不过vite没有内置terser&#xff0c;需要手动安装依赖 安装完后在vite.config.js文件加上相应的配置即可。 2024-4-9

日本韩国海外网红达人合作:共创TikTok与YouTube双赢营销格局

【本篇由言同数字科技有限公司原创】日韩地区拥有庞大的互联网用户群体&#xff0c;其中TikTok和YouTube作为两大主流平台&#xff0c;吸引了大量的用户和网红。随着直播带货在全球范围内的兴起&#xff0c;日韩地区的网红们也开始积极参与直播带货&#xff0c;将其作为一种新的…

如何使用pandoc转word和正确的参考文献格式

如何使用pandoc转word和正确的参考文献格式 latex转word参考文献样式 .csl 文件获取方法&#xff1a; bib转ris 在线转换导入endnote文献管理工具 latex转word 在cmd中转到latex文件所在目录&#xff0c;运行&#xff1a; pandoc sn-article.tex -o output_1.docx -w docx --…

VRRP——虚拟路由冗余协议

什么是VRRP 虚拟路由冗余协议VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;是一种用于提高网络可靠性的容错协议。 通过VRRP&#xff0c;可以在主机的下一跳设备出现故障时&#xff0c;及时将业务切换到备份设备&#xff0c;从而保障网络通信的连续性和可…

研华UNO-3082-BTO工控机维修Advantech工业计算机主机深圳捷达工控维修

Intel Core™ 2 双核自动化计算机 带双 DVI、2 x PCI 和 FireWire Intel Core™ 2 双核自动化计算机 带双 DVI、1 x PCIe、3 x PCI 和 FireWire 板载 Intel Core 2 Duo L7500 1.6 GHz 处理器 双 DVI-I 支持最多 3 个显示器 用于视觉检测设备的双 IEEE-1394 通过跳线选择 AT/AT…

php其他反序列化知识学习

简单总结一下最近学习的&#xff0c;php其他的一些反序列化知识 phar soap session 其他 __wakeup绕过gc绕过异常非公有属性&#xff0c;类名大小写不敏感正则匹配&#xff0c;十六进制绕过关键字检测原生类的利用 phar 基础知识 在 之前学习的反序列化利用中&#xff0…