【jeecg-boot】jeecg-boot实时数据推送-websocket的使用

jeecgboot websocket 消息 1、添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket配置类: package org.jeecg.config; import org.springframework.co 阅读详情

本实例以改造的全局的消息推送为例

 

因为是全局的消息推送,所以必须得在全局的界面去写

参考的是官方的消息推送的例子,然后做了共性的处理,便于其他业务使用

前端:

创建公共的websocket处理文件:xscommonwebsocket.js


//变量
const xsws ={
  websock:null,
  lockReconnect:false,
  heartCheck:null,

}

export  default  xsws
export function  initWebSocket(pageType,userId,paramUrl) {
  // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https
  // var userId = store.getters.userInfo.id;
  var url = window._CONFIG['domianURL'].replace("https://","wss://").replace("http://","ws://")+"/xsiotwebsocket/"+pageType+"/"+userId;
  if (paramUrl!=null&&paramUrl!=""){
    url += "/"+paramUrl;
  }
  console.log(url);
  xsws.websock = new WebSocket(url);
  xsws.websock.onopen = websocketOnopen;
  xsws.websock.onerror = websocketOnerror;
  // xsws.websock.onmessage = websocketOnmessage;
  xsws.websock.onclose = websocketOnclose;
  xsws.lockReconnect = false;
}
export  function websocketOnopen () {
  console.log("WebSocket连接成功");
  //心跳检测重置
  xsws.heartCheck.reset().start();
}
export  function websocketOnerror(e) {
  console.log("WebSocket连接发生错误");
  reconnect();
}
export  function websocketOnmessage(e) {
  console.log("-----接收消息-------",e.data);
  var data = eval("(" + e.data + ")"); //解析对象
  console.log("接收到的信息:"+e.data);
  //心跳检测重置
  xsws.heartCheck.reset().start();
}
export   function websocketOnclose(e) {
  console.log("connection closed (" + e.code + ")");
  reconnect();
}
export  function  websocketSend(text) { // 数据发送
  try {
    xsws.websock.send(text);
  } catch (err) {
    console.log("send failed (" + err.code + ")");
  }
}

export  function  reconnect() {
  if(xsws.lockReconnect) return;
  xsws.lockReconnect = true;
  //没连接上会一直重连,设置延迟避免请求过多
  setTimeout(function () {
    console.info("尝试重连...");
    initWebSocket();
    xsws.lockReconnect = false;
  }, 5000);
}
export  function  heartCheckFun(){
  //心跳检测,每20s心跳一次
  xsws.heartCheck = {
    timeout: 20000,
    timeoutObj: null,
    serverTimeoutObj: null,
    reset: function(){
      clearTimeout(this.timeoutObj);
      //clearTimeout(this.serverTimeoutObj);
      return this;
    },
    start: function(){

      this.timeoutObj = setTimeout(function(){
        //这里发送一个心跳,后端收到后,返回一个心跳消息,
        //onmessage拿到返回的心跳就说明连接正常
        websocketSend("HeartBeat");
        console.info("客户端发送心跳");
        //self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了
        //  that.websock.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
        //}, self.timeout)
      }, this.timeout)
    }
  }
}

export  function  websocketclose() {
  xsws.websock.close();
  xsws.lockReconnect = true;
  console.log("关闭websocket");
}

在src/components/tools/UserMenu.vue文件中引用

  //websocket相关
  import  xsws,{initWebSocket,heartCheckFun,websocketclose} from  '../../views/modules/xswebsocket/xscommonwebsocket.js'
  import store from '@/store/'
  //websocket相关
      xsws,//websocket相关
      initWebSocket,//websocket相关
      heartCheckFun,//websocket相关
      websocketclose,//websocket相关
      store,//websocket相关

 

创建连接

      xsMsgInitWebsocket(){
        //websocket相关
        let userId = store.getters.userInfo.id;
        //创建socket连接
        initWebSocket("xsmsgwebsocket","xsGlobalMsgNotice",userId,"");
        //设置消息接收的处理方法
        xsws.websock.onmessage = this.websocketOnmessage;
        heartCheckFun();
      },

重写接收到信息后的数据处理

// //消息接收以后的处理方法
      websocketOnmessage(e){
        // console.log("-----接收到后台来的消息-------",e.data);
        let data = eval("(" + e.data + ")"); //解析对象
        console.log("接收到的信息是:"+e.data);
        this.xsHandleMsgNotice(data);
        //心跳检测重置
        xsws.heartCheck.reset().start();
      },

后端:

 

 

推送:

 

 

jeecg框架下的websocket的配置调试 因为公司的项目是用jeecg框架开发的,jeecg官网有一些说明文档可以参考:http://jeecg.iteye.com/blog/2320670。我主要讲一下按照他这个文档配置之后遇到的问题,下载的jeecg3.7.1版本,在官网就可以找到,发现他这个框架已经集成了大部分的聊天框架,前端用的是layui的实时聊天框架layim,不过他这里的版本比较老,建议去layui官网找最新版本(不过这个目 阅读详情

相关推荐

jeecg-boot-base-core 03day

JeecgBoot的常量与敏感数据处理机制 常量中心(common.constant): 集中管理全项目的字符串常量、魔法数字、服务名、数据库列名和业务枚举 作为唯一常量源被各模块引用,确保一致性 支持编译期校验和跨模块兼容,修改全局生效 敏感数据处理(common.desensitization): 通过@Sensitive注解实现字段级敏感数据处理 采用Jackson序列化器+AOP切面统一处理 支持加密存储、脱敏展示和解密使用 与手机号、身份证等敏感字段的安全处理深度集成 两个模块共同构建了Jeecg

weixin_47759174的博客 190

JeecgBoot关于websocket的改进方案

1.环境描述 JeecgBoot3.0 2.websocket权限认证 在shiroConfig.java代码中注释掉 filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告 配置拦截器 package org.jeecg.config.websocket; import org.apache.commons.lang.StringUtils; import org.springframework.http.server.

JEECG官方博客 2837

webview腾讯x5内核离线安装

离线集成腾讯TBS浏览器服务,彻底解决官方下载限流问题,永久免费

观千剑而后识器,操千曲而后晓声。 7923

jeecg中的socket使用

JEECG BOOT 的 websocket 旨在服务端主动向客户端推送数据,实现系统向在线用户推送消息,可群发,可对指定用户发送。

ficshos的博客 2184

SAP License USMM SLAW2 SAP审计

引言 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安装的SAP系统需要进行测定。 关键字: SAP License、 SAP USMM、 SLAW2、 SAP 账号、SAP 账号审计、 SAP License 审计、 SAP 审计报告、SAP 账号优化 SAP License审计邮件 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安...

感悟人生 2981

基于STM32的智能衣柜系统开发实战(附完整源码与硬件设计)

本文详细介绍了基于STM32的智能衣柜系统开发实战,包括硬件设计、软件架构和云端功能实现。系统具备实时温湿度监控、自动加热除湿、紫外线杀菌等核心功能,通过STM32F103C8T6主控芯片和ESP8266无线模块实现智能控制。附完整源码与硬件设计,适合科技爱好者和开发者参考。

peach的博客 782

【jeecg学习记录】spring websocket配置——可移植到自己的springboot系统,后台采用redis做消息推送(轻巧适合小型系统,大型系统建议使用其他方式)

websocket

Chen_chenjiasheng的博客 1816

NI-HIL学习开篇

自我介绍下,四年零部件厂工作经验,一年(至今)主机厂工作经验,负责BMS/VCU方向软硬件测试。 学习目的:把握新能源汽车的测试发展趋势,顺应历史的洪流。 学习目标:1.掌握HIL开发测试流程中的IO配置、开环验证、闭环模型开发及调试、自动化测试 2.掌握第三方模型的搭建及simulink关联仿真(2019.05.21新增:需巩固练习matlab基础——2...

masonson的专栏 4180

JeecgBoot项目中WebSocket多窗口推送冲突问题分析与解决方案

在企业级应用中,实时数据可视化已成为业务监控和决策支持的核心需求。积木报表(JimuReport)作为一款优秀的数据可视化工具,通过WebSocket技术实现实时数据推送,为用户提供动态更新的报表和大屏展示。然而,在多窗口或多标签页场景下,WebSocket推送往往面临严重的冲突问题:**数据重复接收、连接资源竞争、状态同步困难**等。 本文将深入分析JeecgBoot项目中WebSocket多...

gitblog_01410的博客 484

OpenCv案例(七): 基于OpenCvSharp计算图像的清晰度(自动对焦)

自动对焦,其实是对相机成像的清晰值得计算,若对焦不清晰,成像的清晰度低,视觉效果模糊。若是在工业检测行业,对焦不准确,可能会造成严重后果;对焦准确的图像,其清晰度高,对比度鲜明,层次明显。

qq_37835727的博客 7115

LeRobot — 基于 PyTorch 的真实世界机器人学习框架(一)- 核心框架模块解析

LeRobot 是一个开源的机器人学习框架,由 Hugging Face 开发,旨在降低机器人学的准入门槛。该框架提供完整的机器学习流程支持,包括数据采集、训练、评估和部署。核心模块涵盖数据集标准化、策略算法、硬件抽象和强化学习组件,采用模块化设计实现灵活扩展。通过集成 Hugging Face Hub,用户可以轻松共享数据集和预训练模型。LeRobot 特别注重真实世界的机器人应用,支持多种前沿算法如模仿学习、视觉语言动作模型等,并提供统一的硬件接口和仿真环境适配。

熊猫小妖的AI世界 171

【配置】Nginx 配置 ws wss jeecg-boot websocket

【配置】Nginx 配置 ws wss jeecg-boot。

我是Superman丶的博客 1090

华为OD机试双机位C卷:采购订单 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 采购订单,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,并提供在线OJ模拟做题。华为OD机试真题【采购订单】

qq_45776114的博客 3534

jeecg集成实现websocket

jeecg集成实现websocket在线聊天功能,使用layim作为在线聊天ui框架,java的websocket作为后台服务。    在jeecg各风格的首页引入layui.jsp这个文件为当前风格引入在线聊天功能,确保在jquery后引入,layim框架依赖于jquery。         在layui.jsp中引入了如下三个文件,layui.css和layui.js分别是layui框架的cs

JEECG官方博客 6850

YOLOv11改进策略【SPPF】| AIFI : 基于Transformer的尺度内特征交互,在降低计算成本的同时提高模型的性能

本文记录的是基于AIFI模块的YOLOv11目标检测改进方法研究。AIFI是RT-DETR中高效混合编码器的一部分,利用其改进YOLOv11模型,

Limiiiing的博客 2241

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jeecg配置nginx websocket 转发

map $http_upgrade $connection_upgrade { default upgrade; '' close; } #配置转发ws请求 location ^~ /jeecg-boot/websocket { proxy_pass http://192.168.1.65:9090/jeecg-boot/websocket; add_header Access-Control-Allow-Origin *; proxy_redirect off;

tonysh_zds的博客 2427

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Jeecg-Boot登录后刷新404?Nginx配置try_files一招搞定

本文针对Jeecg-Boot单页应用部署后刷新页面出现404的典型问题,深入剖析了其根源在于前端路由与Nginx静态文件服务的错位。核心解决方案是正确配置Nginx的try_files指令,确保所有非静态资源请求均回退到index.html,由前端路由接管。文章提供了详细的配置示例、优化建议及常见陷阱排查方法,帮助开发者快速解决SPA部署难题。

rose2的博客 962

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jeecg项目学习(开源项目持续学习)

目录jeecg低代码多系统技术理论学习:在线手册笔记:技术架构:后端前端安装环境:部署:一:前台知识点:二:以下是后台知识点:spring:sprinboot:websocket:工具包:springAOP注解:quartz定时包:jackson包注解:excel包lombok包下的注解:tomcat优化:nginx:JVM优化:2、jvm调优工具Headless模式是系统的一种配置模式。在系统可能缺少显示设备、键盘或鼠标这些外设的情况下可以使用该模式。Weblogic管理服务G1垃圾回收模式CMS常用参数

HMing的博客 6601

JeecgBoot集成WebSocket实现实时通信:在线协作功能开发案例

你是否在开发多人协作系统时遇到过数据同步延迟问题?团队成员修改数据后需要手动刷新页面才能看到最新状态?本文将通过JeecgBoot框架集成WebSocket(套接字)技术,实现浏览器与服务器的全双工通信,打造实时在线协作功能。读完本文你将掌握:WebSocket配置方法、连接管理、消息分发机制及在线编辑冲突处理方案。 ## WebSocket基础配置与连接管理 JeecgBoot通过`WebS

gitblog_00389的博客 1190

WebSocket的集成 Spring Boot

WebSocket的集成 集成 websocket 步骤 (1)maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> (2)WebSocket配置类 package org.jeecg.config; impo

Javanumbe的博客 364

jeecg-boot (vue前端)解决跨域问题

1.设置在vue.config.js 这个项目的前端用的vue-cli 3设置在vue.config.js里面,不在以前的index.js里面,也没有proxytable参数,现在用的是: devServer: { port: 3000, proxy: { '/jeecg-boot': { target: 'http://localhost:8080', //请求本地 需要jeecg-boot后台项目 ws: false, chan

weixin_43102784的博客 9084

jeecg boot 3.2.0 用户token刷新在线用户显示问题

摘要:分析Jeecg框架中在线用户管理中"admin(我)"标识消失的问题。原因是前端通过token判断当前用户,而后端在身份认证时会刷新token值导致前后端token不一致。文章提出三种解决方案:1)通过响应头返回新token;2)使用WebSocket推送新token;3)在接口中返回redis键名进行比较。最终采用第三种方案,修改在线用户列表接口返回tokenKey,前端通过拼接前缀比较键名而非token值,解决了标识消失问题。该方案实现简单且有效保证了用户标识的稳定性。

小夏卷编程的博客,欢迎大家留言讨论 520

jeecg-boot-base-core config 04

本文解析了JeecgBoot框架的关键配置设计,涵盖权限认证、多租户、WebMVC等核心模块。系统通过分层配置类实现技术栈隔离,采用条件装配(@Conditional)实现环境切换能力,支持动态扩展。其中,Shiro+JWT权限链需手动配置60+URL白名单,MyBatis-Plus通过拦截器实现多租户隔离,Druid监控页需定制化去广告。配置体系遵循"约定大于配置"原则,通过YAML驱动JavaBean初始化,同时保持类型安全。优点包括关注点分离、依赖注入、开闭原则支持,但也存在白名单

weixin_47759174的博客 225

websocket在springboot中的实现

1.maven依赖: <!--webSocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifac...

weixin_43253838的博客 311

JeecgBoot企业级低代码平台集成WebSocket实时监控:服务器性能仪表盘完整开发指南

JeecgBoot作为一款强大的企业级低代码开发平台,通过集成WebSocket技术,能够轻松构建实时服务器性能监控仪表盘。本教程将为您展示如何快速搭建一个功能完善的性能监控系统,无需编写大量代码即可实现实时数据展示。 ## 🚀 为什么选择JeecgBoot进行实时监控开发 JeecgBoot提供了完整的低代码解决方案,特别适合企业级应用的快速开发。通过平台内置的代码生成器和组件库,您可以:

gitblog_00861的博客 534

解决websocket使用@Autowired、@Value获取值为null解决方法

解决websocket使用@Autowired、@Value获取值为null解决方法

weixin_44684812的博客 2259
上一篇: 【jeecg-boot】在一台机器上部署多个token如何避免混乱
下一篇: 【H5-chrome】chrome自动播放音频的问题
gwcgwcjava
博客等级 码龄17年 70粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值