当前位置: 首页 > news >正文

Spring Task和WebSocket使用

在现代 Web 应用中,WebSocket 作为一种全双工通信协议,为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能,使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 WebSocket,并验证其是否正常工作。

1. Nginx 中的 WebSocket 配置
1.1 安装 Nginx

在进行配置之前,确保你的系统上已安装 Nginx。你可以使用以下命令来安装:

Ubuntu/Debian:

sudo apt update
sudo apt install nginx

CentOS/RHEL:

sudo yum install nginx
1.2 基本 Nginx 配置

打开 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default),并添加以下内容以支持 WebSocket 连接。

注意监听端口号不是80的话,反向代理可能成功不了

server {listen 80;   # 注意这里要替换为80  (websockt默认瞄准端口)server_name yourdomain.com;  # 替换为你的域名location /ws {  # WebSocket 路径proxy_pass http://localhost:8080;  # 你的 WebSocket 服务器地址proxy_http_version 1.1;  # 确保使用 HTTP/1.1proxy_set_header Upgrade $http_upgrade;  # 必须的配置proxy_set_header Connection "Upgrade";  # 必须的配置proxy_set_header Host $host;  # 保留主机头部proxy_set_header X-Real-IP $remote_addr;  # 客户端真实 IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发 IPproxy_set_header X-Forwarded-Proto $scheme;  # 转发协议}location / {  # 其他请求proxy_pass http://localhost:8080;  # 可以根据实际情况修改}
}
我修改了proxy_pass让他直接访问我的后端服务,之前的是

如果要使用myserver 要先配置好自己的,我的是webservers 不太一样且端口号不同,就改掉了

 

1.3 重启 Nginx

配置完成后,需要重启 Nginx 以应用更改:

sudo systemctl restart nginx
# 或者
nginx -s reload
2. 验证 WebSocket 配置的正确性

确保 WebSocket 正常工作的方式有很多,以下是几种简单有效的方法:

2.1 使用浏览器的开发者工具
  1. 打开你的网页应用并使用浏览器的开发者工具(通常按 F12)。
  2. 切换到 Network 标签。
  3. 刷新页面,并查看 WebSocket 连接。
  4. 查找以 ws:// 或 wss:// 开头的请求,确认其状态为 101 Switching Protocols。这表示 WebSocket 连接已成功建立。

相关文章:

Spring Task和WebSocket使用

在现代 Web 应用中,WebSocket 作为一种全双工通信协议,为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能,使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 WebSocket…...

微信小程序 本地调试和vconsole可以 但在体验上页面不请求数据

微信小程序页面不请求数据 本地调试和vconsole可以 但在体验版页面不请求数据,如遇到这类问题基本都是一样的解决办法 1、如何调试找到问题 首先要把小程序本地设置的不校验合法域名关掉,不然本地一直都是好的 然后通过本地真机调试打断点找到问题位…...

QT:将QTableWidget内容写入txt文件中

文章详请:最近在做手在眼上的标定,首先要采集机械臂数据和图像数据,我使用tablewidget进行机械臂数据的显示,最后的计算需要将机械臂位姿数据存储在txt文件中。 引用:Qt如何保存tableWidget数据?_qt table…...

前端面试题(六)

1.let,var,const区别 1.作用域:  var:var声明的变量存在函数作用域或全局作用域,这意味着它们在声明它们的函数内部可见,而不在块级作用域内可见。 let和const:let和const声明的变量存在块级作用域,这…...

「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历

本篇将带你实现一个简易日历应用,显示当前月份的日期,并支持选择特定日期的功能。用户可以通过点击日期高亮选中,还可以切换上下月份,体验动态界面的交互效果。 关键词 UI互动应用简易日历动态界面状态管理用户交互 一、功能说明…...

Leetcode581. 最短无序连续子数组(HOT100)

链接 我的代码&#xff1a; class Solution { public:int findUnsortedSubarray(vector<int>& nums) {vector<int> res nums;sort(res.begin(),res.end());int l 0,r nums.size()-1;while(nums[l]res[l]){l;if(lnums.size()){return 0;}}while(nums[r]res…...

HTML前端开发-- Flex布局详解及实战

引言 Flex布局&#xff0c;全称为Flexible Box Layout&#xff0c;是一种现代CSS布局技术&#xff0c;它提供了一种更有效的方式来设计响应式布局和复杂页面布局。本文将详细介绍Flex布局的基本概念、属性以及实战应用。 一、基本概念 Flex布局的核心是Flex容器&#xff08;…...

基于JWT跨语言开发分布式业务系统的挑战与实践:多语言协作的最佳方案

在现代分布式架构下&#xff0c;开发团队往往由来自不同技术栈和开发语言的工程师组成。如何有效地管理这些开发人员的协作&#xff0c;尤其是在实现跨语言的认证与授权机制时&#xff0c;成为了开发者面临的一个重大挑战。JSON Web Token&#xff08;JWT&#xff09;作为一种轻…...

二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(2)

前言 上篇介绍了二分法的相关原理并结合具体题目进行讲解运用&#xff0c;本篇将加大难度&#xff0c;进一步强化对二分法的掌握。 一. 寻找峰值 1.1 题目链接&#xff1a;https://leetcode.cn/problems/find-peak-element/description/ 1.2 题目分析: 题目要求返回数组内…...

什么是 Kata Containers?

什么是 Kata Containers&#xff1f; Kata Containers 是一种结合了容器技术和虚拟机技术的轻量级运行时&#xff0c;旨在提供容器的速度和虚拟机的安全性。它将容器运行在一个隔离的虚拟机中&#xff0c;从而大幅提升安全性&#xff0c;同时保持容器的高效性。 Kata Contain…...

SpringMvc项目配置RabbitMq

前言&#xff1a;只有消费者部分&#xff0c;没有记录生产者部分 结构图 配置类 可以xml配置&#xff0c;也可以配置类&#xff0c;二者可以相互转化。两种bean注入的方式。 import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.spring…...

shell编程(4)脚本与用户交互以及if条件判断

shell编程&#xff08;4&#xff09;脚本与用户交互以及if条件判断 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;…...

vue2组件跨层级数据共享provide 和 inject

在 Vue 2 中&#xff0c;provide 和 inject 的功能也是可以使用的&#xff0c;虽然在 Vue 3 中它们成为了组合式 API 的一部分。在 Vue 2 中&#xff0c;provide 和 inject 主要是用于祖先组件和后代组件之间的数据共享&#xff0c;而不是通过 props 和 emit 逐层传递。 Vue 2…...

springboot/ssm校园闲置物品交易系统ava大学生二手闲置交易平台web二手源码

springboot/ssm校园闲置物品交易系统ava大学生二手闲置交易平台web二手源码 基于springboot(可改ssm)htmlvue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数…...

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…...

Linux centOS 7 安装 rabbitMQ

1.安装前需要了解&#xff0c;rabbitmq安装需要先安装erlang&#xff0c;特别注意的是erlang与rabbitmq的版本之间需要匹配。 el/7/rabbitmq-server-3.10.0-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 3.10版本的rabbitmq 对于erlang的版本要求可以看此连接…...

活着就好20241202

亲爱的朋友们&#xff0c;大家早上好&#xff01;今天是2024年12月2日&#xff0c;第49周的第一天&#xff0c;也是十二月的第二天&#xff0c;农历甲辰[龙]年十月三十。在这个全新月份的开始、阳光初升的清晨&#xff0c;愿第一缕阳光悄悄探进你的房间&#xff0c;带给你满满的…...

自由学习记录(28)

C# 中的流&#xff08;Stream&#xff09; 流&#xff08;Stream&#xff09;是用于读取和写入数据的抽象基类。 流表示从数据源读取或向数据源写入数据的矢量过程。 C# 中的流类是从 System.IO.Stream 基类派生的&#xff0c;提供了多种具体实现&#xff0c;每种实现都针对…...

操作系统、虚拟化技术与云原生01

操作系统基础 操作系统定义 OS声明了软件怎么调用硬件&#xff0c;同时支持人机交互 人机交互的过程&#xff1a; shell是人机交互转换的虚拟环境&#xff0c;内核只能识别0、1组成的数据流&#xff0c;底层资源只能识别电流的变化 操作系统的组成 1. 进程管理 进程定义&#x…...

linux的挂卸载

挂卸载操作 在 Linux 系统中&#xff0c;挂载&#xff08;mount&#xff09;和卸载&#xff08;umount&#xff09;是管理文件系统和存储设备的核心操作。通过这两个操作&#xff0c;我们可以将设备&#xff08;如硬盘、光盘、U盘等&#xff09;或网络文件系统的内容集成到系统…...

GLM-4-9B-Chat-1M惊艳效果:复杂SQL代码库跨文件依赖关系可视化

GLM-4-9B-Chat-1M惊艳效果&#xff1a;复杂SQL代码库跨文件依赖关系可视化 1. 项目背景与核心价值 当你面对一个包含数百个SQL文件的大型数据仓库项目时&#xff0c;最头疼的问题是什么&#xff1f;我相信很多开发者和数据工程师都会说&#xff1a;理不清的表依赖关系。 传统…...

AI万能分类器零基础入门:5分钟搭建无需训练的文本分类系统

AI万能分类器零基础入门&#xff1a;5分钟搭建无需训练的文本分类系统 1. 引言&#xff1a;为什么选择零样本分类&#xff1f; 想象一下这样的场景&#xff1a;你刚接手一个新项目&#xff0c;需要快速对大量用户反馈进行分类。传统方法要求你收集数据、标注样本、训练模型&a…...

小白卖家的“时间困境”:为什么我每天忙得要死,却不出单?

忙碌不是努力&#xff0c;是方法出了问题。入行跨境电商三个月了。从零到日出百单&#xff0c;这条路我算是走通了。但回想起来&#xff0c;最让我后怕的&#xff0c;不是刚开始没单的那段日子&#xff0c;而是中间那段“看起来很忙”的日子。每天从早忙到晚&#xff0c;电脑上…...

从PMOS、NMOS到CMOS:揭秘现代芯片的互补设计哲学

1. 从PMOS与NMOS的相爱相杀说起 我第一次接触MOSFET晶体管是在大学实验室里&#xff0c;当时对着示波器上那些跳动的波形百思不得其解。教授指着电路板说&#xff1a;"记住&#xff0c;PMOS和NMOS就像电路世界的阴阳两极。"这句话让我花了整整三年时间才真正理解。 P…...

Cytron PS2 Shield嵌入式驱动与极坐标映射原理

1. 项目概述Cytron PS2 Shield 是一款专为 Arduino 平台设计的 PlayStation 2&#xff08;PS2&#xff09;游戏手柄通信扩展板&#xff0c;其核心功能是将标准 PS2 手柄的串行协议解析为嵌入式系统可直接读取的结构化数据。该 Shield 通过 UART 接口与主控 MCU 连接&#xff0c…...

听说读写画样样精通!美团开源LongCat-Next,给物理世界AI统一了语言

美团刚刚开源了最强原生多模态模型LongCat-Next&#xff0c;将物理世界AI的语言统一了。LongCat-Next模型能听&#xff0c;能说。比如语音问答&#xff0c;或者让它用指定音色说话&#xff0c;能读能写&#xff08;视觉理解和推理&#xff09;&#xff0c;还能画画和设计&#…...

开源AI新选择:Ollama部署Llama-3.2-3B,性能实测与体验

开源AI新选择&#xff1a;Ollama部署Llama-3.2-3B&#xff0c;性能实测与体验 1. 模型介绍与技术背景 1.1 Llama-3.2-3B模型概述 Llama-3.2-3B是Meta公司推出的开源大型语言模型系列中的一员&#xff0c;作为3B参数规模的版本&#xff0c;它在保持轻量级的同时提供了出色的文…...

jquery-match-height完全教程:5分钟学会创建完美等高元素

jquery-match-height完全教程&#xff1a;5分钟学会创建完美等高元素 【免费下载链接】jquery-match-height a responsive equal heights plugin 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-match-height jquery-match-height是一款强大的响应式等高元素插件&…...

深度解析ThreeFingerDragOnWindows:Windows触控板三指拖动技术实现

深度解析ThreeFingerDragOnWindows&#xff1a;Windows触控板三指拖动技术实现 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeF…...

GitHub Copilot 默认启用训练之后 企业安全如何应对

文章目录前言一、这次政策改动&#xff0c;到底改了什么二、为什么企业不能只看“Business 和 Enterprise 不受影响”三、content exclusion 为什么挡不住所有风险四、从 IDE 到 Agent&#xff0c;企业研发边界已经变了五、企业现在就该做的几件事总结前言 GitHub 这次关于 Co…...