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

苍穹外卖WebSocket连接问题

在调试过程中发现当前端应用部署在Nginx下访问localhost时WebSocket连接无法建立而直接运行前端项目时则可以正常连接。通过浏览器F12排查问题后发现是WebSocket的URL路径不同我们实际需要的地址为ws://localhost/ws/但Nginx转发的请求却指向了ws://localhost/缺少了关键的/ws/路径前缀。为解决该问题在Nginx配置文件中添加了相应的路径重写规则于是在nginx.conf中配置以下代码# WebSocket location /ws/ { #proxy_pass http://localhost:8080/admin/; proxy_pass http://webservers/ws/; proxy_http_version 1.1; proxy_read_timeout 3600s; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } ​ # WebSocket 没有 /ws 前缀 location ~ ^/([a-zA-Z0-9_-]{8,32})$ { proxy_pass http://webservers/ws/$1; proxy_http_version 1.1; proxy_read_timeout 3600s; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; }调整配置后Nginx能够正确地连接上WebSocket但是请求却不是转发至/ws/路径而是相当于重新转发至ws://localhost/问题并没有被彻底解决。同时又发现新的问题WebSocket连接成功建立后当有订单到达时有消息弹窗但是没有声音。在浏览器F12控制台中发现了以下错误“Uncaught (in promise) NotAllowedError: play() failed because the user didnt interact with the document first.”该错误源于现代浏览器的自动播放安全策略。浏览器要求用户必须先与页面进行交互如点击、触摸等才能允许音频或视频自动播放以防止网站在用户未授权的情况下擅自播放媒体内容。这个问题解决方案倒是相对简单只需在页面上进行一次用户交互例如点击任意区域之后再触发消息弹窗时音频即可正常播放。回到websocket连接问题在之前的Nginx配置中使用正则表达式location ~ ^/([a-zA-Z0-9_-]{8,32})$可能会与其他路径产生冲突因此需要从根源上解决问题。让我们到前端代码进行排查。前端项目路径为project-sky-admin-vue-ts\src\layout\components\Navbar\index.vue其中webSocket方法的代码如下webSocket() { const that this as any let clientId Math.random().toString(36).substr(2) //let socketUrl process.env.VUE_APP_SOCKET_URL clientId // 使用硬编码的WebSocket URL let socketUrl ws://localhost:8080/ws/ clientId console.log(socketUrl, socketUrl) if (typeof WebSocket undefined) { that.$notify({ title: 提示, message: 当前浏览器无法接收实时报警信息请使用谷歌浏览器, type: warning, duration: 0, }) } // ... 后续代码 }通过测试发现将 URL 硬编码为ws://localhost:8080/ws/ clientId后 WebSocket 能够正常连接这表明问题出在process.env.VUE_APP_SOCKET_URL环境变量的取值上。尽管尝试了多种方法查找资料依旧未能彻底解决环境变量配置不正确的问题。但至少目前功能可用。鉴于该问题依然存在那就得请教一下各位了。

相关文章:

苍穹外卖WebSocket连接问题

在调试过程中发现,当前端应用部署在Nginx下访问localhost时,WebSocket连接无法建立;而直接运行前端项目时则可以正常连接。通过浏览器F12排查问题后,发现是WebSocket的URL路径不同:我们实际需要的地址为ws://localhost…...

c++ 类和对象(全)

本文只是把之前上中下三篇文章集合了起来,后面跟着补充一点示例代码,也只是为了方便大家一下子全部观看。 类和对象(上) 一.类的定义 1.类定义格式 我们可以先看一个类的例子(栈): class Stack { private:int* a;in…...

优化Docker镜像下载速度:国内镜像源配置指南

1. 为什么需要配置国内Docker镜像源 第一次用Docker拉取镜像时,看着进度条像蜗牛一样缓慢移动,我盯着屏幕足足等了半小时。后来才发现,默认的Docker Hub服务器在国外,国内直接访问速度感人。这就像你在北京点外卖,却非…...

学生专属福利:如何免费获取JetBrains和Navicat全家桶

1. 学生专属福利:为什么你需要它们? 还在为开发工具的高昂费用发愁吗?作为一个过来人,我太懂学生时代那种“想学技术,却被工具卡住”的窘迫了。一套正版的JetBrains全家桶(比如IntelliJ IDEA、PyCharm、Web…...

Markdown写作技巧:LaTeX公式+代码块高亮全攻略

Markdown写作技巧:LaTeX公式代码块高亮全攻略 在技术文档和学术研究的写作中,Markdown因其简洁性和强大功能已成为首选工具。但对于需要表达复杂数学公式或展示多语言代码的专业作者来说,如何充分利用Markdown的高级功能仍是一个挑战。本文将…...

基于PEX88096的PCIe 4.0八盘M.2扩展卡设计

1. 项目概述PCIe 4.0 M.2扩展卡长期面临市场定价畸高问题,主流商用产品普遍标价数千元,严重制约了高性能存储系统在DIY、边缘计算及小型服务器场景中的普及应用。本项目以PEX88048 PCIe 4.0交换芯片为核心,构建一款支持8路独立M.2 NVMe插槽的…...

Python+Selenium实现抖音博主批量监控:300+账号实时更新通知(附完整代码)

PythonSelenium构建高可用抖音博主监控系统:从零到一的实战架构与性能调优 最近在技术社群里,经常看到有朋友在讨论如何批量追踪抖音博主的更新动态。无论是做内容分析、竞品研究,还是个人兴趣追踪,手动刷新几百个主页显然不现实。…...

告别数据孤岛:基于WebDAV的Zotero与InfiniCLOUD跨平台同步实战

1. 为什么需要跨平台文献同步? 作为一名常年泡在实验室的研究生,我经历过无数次这样的崩溃瞬间:在实验室电脑上整理好的文献库,回到宿舍打开笔记本发现参考文献全乱了;出差路上想用平板查篇论文,却发现最新…...

【解刊】IEEE Trans系列新宠:中科院1区TOP期刊,国人作者占比近八成领跑全球!

1. IEEE Transactions on Cybernetics:控制论领域的黄金期刊 最近在学术圈里,IEEE Transactions on Cybernetics(IEEE控制论汇刊)成了热门话题。这本期刊不仅稳居中科院1区TOP,更让人惊讶的是,中国学者在这…...

社区分享 | 从零开始学习 TinyML(三)

1. TinyML模型部署后的性能优化挑战 当你第一次把训练好的TinyML模型部署到Arduino或Cortex-M系列MCU上时,可能会遇到一些令人头疼的问题。我清楚地记得自己早期的一个项目,模型在PC上测试时运行良好,但移植到开发板上后,推理速度…...

基于Mirage Flow的个性化学习推荐系统构建

基于Mirage Flow的个性化学习推荐系统构建 1. 引言 你有没有过这样的经历?同一个班级,同样的老师,同样的教材,但有的同学学得飞快,有的同学却总是卡在某个知识点上,怎么都绕不过去。传统的在线教育平台&a…...

FPGA选型指南:如何为LED大屏控制器挑选性价比最高的芯片(附Xilinx/Lattice对比)

FPGA选型指南:如何为LED大屏控制器挑选性价比最高的芯片(附Xilinx/Lattice对比) 当一块巨大的户外广告屏在夜幕下亮起,播放着流畅震撼的视频时,很少有人会想到,驱动这背后数百万乃至上千万像素点精准发光的…...

Win11组播通信故障排查:为什么关闭防火墙后还是收不到组播数据?

Win11组播通信深度排障:当防火墙不再是“罪魁祸首” 最近在调试一个分布式数据采集系统时,遇到了一个颇为典型的网络问题:几台运行Windows 11的工控机之间,组播(Multicast)通信死活不通。按照最常规的思路&…...

避开Doze模式坑!Android 6.0+保活终极方案:JobScheduler与推送SDK混合使用指南

深入解析Android 6.0应用保活:融合JobScheduler与厂商推送的实战策略 在Android生态中,应用保活一直是个让开发者又爱又恨的话题。爱的是,它能确保即时通讯、后台同步、位置追踪等核心功能稳定运行;恨的是,从Android …...

Fish Speech 1.5镜像交付物清单:含启动脚本、日志、配置、证书模板

Fish Speech 1.5镜像交付物清单:含启动脚本、日志、配置、证书模板 1. 镜像概述与技术规格 Fish Speech 1.5是由Fish Audio开源的新一代文本转语音模型,基于LLaMA架构与VQGAN声码器,支持零样本语音合成。用户只需提供10-30秒的参考音频&…...

Z-Image Turbo性能评测:不同硬件下的生成速度对比

Z-Image Turbo性能评测:不同硬件下的生成速度对比 1. 评测背景与目的 Z-Image Turbo作为一款基于Turbo架构的高性能AI绘图工具,以其极速生成能力在本地AI绘画领域备受关注。本次评测旨在通过实际测试,展示不同硬件配置下的生成速度表现&…...

PP-DocLayoutV3内网穿透部署方案

PP-DocLayoutV3内网穿透部署方案 1. 引言 在企业内部网络环境中,如何安全高效地部署和访问AI服务是一个常见的技术挑战。PP-DocLayoutV3作为新一代文档布局分析引擎,能够精准识别表格、公式、文本等文档元素,但传统的部署方式往往受限于内网…...

嘉立创EDA专业版多账号管理技巧:如何避免激活文件冲突

嘉立创EDA专业版多账号管理实战:告别激活文件冲突,实现高效协同 在电子设计领域,尤其是团队协作或自由职业者同时处理多个客户项目时,一个常见且棘手的问题是如何在同一台工作电脑上优雅地管理多个嘉立创EDA专业版账号。你可能遇到…...

游戏原画师福音:Kook Zimage真实幻想Turbo保姆级入门教程

游戏原画师福音:Kook Zimage真实幻想Turbo保姆级入门教程 1. 引言:从零开始,十分钟拥有你的专属幻想引擎 如果你是一位游戏原画师,或者对创作奇幻、仙侠风格的角色充满热情,那么今天这篇文章就是为你准备的。我们不再…...

Chandra OCR快速部署:基于vLLM的开箱即用方案,5分钟搞定环境

Chandra OCR快速部署:基于vLLM的开箱即用方案,5分钟搞定环境 1. 为什么选择Chandra OCR? 如果你正在寻找一个能真正“理解”文档的OCR工具,而不是简单地把图片上的字抠出来,那么Chandra很可能就是你需要的答案。 想…...

AIGlasses OS Pro智能视觉系统在操作系统课程教学中的应用:资源监控与可视化

AIGlasses OS Pro智能视觉系统在操作系统课程教学中的应用:资源监控与可视化 操作系统这门课,很多学生都觉得抽象又枯燥。CPU调度、内存管理、进程通信……这些概念听起来就让人头大,更别说理解它们在实际系统中是怎么“动”起来的了。传统的…...

基于STC Ai8051U的太阳能户外便携灯开源硬件设计全解析

基于STC Ai8051U的太阳能户外便携灯开源硬件设计全解析 大家好,我是老陈,一个喜欢捣鼓硬件的嵌入式工程师。最近用STC最新的Ai8051U单片机做了一个太阳能户外灯,从电路设计到程序调试,踩了不少坑,也积累了不少经验。今…...

零基础玩转YOLOFuse:RGB+红外双流融合检测保姆级教程

零基础玩转YOLOFuse:RGB红外双流融合检测保姆级教程 你是不是遇到过这样的问题:在夜晚、雾天或者光线不好的时候,摄像头拍出来的画面一片模糊,根本看不清有没有人或者车?传统的目标检测模型这时候就“瞎”了&#xff…...

Qwen-Image-Edit-2511进阶指南:利用LoRA模型,解锁更多修图风格

Qwen-Image-Edit-2511进阶指南:利用LoRA模型,解锁更多修图风格 你是不是已经用Qwen-Image-Edit-2511完成了基础的换装、换背景,觉得它很厉害,但又隐隐感觉少了点什么?比如,你想生成一套赛博朋克风格的服装…...

大学想进ai行业的看过来

大学想进ai行业的看过来 大一迷茫、大二焦虑、大三慌神——如果你是计算机、大数据、人工智能相关专业,或者对AI感兴趣,想毕业后顺利进入AI行业,这篇文章一定要收藏好! 作为过来人,我太懂大学生想进AI行业的困惑&…...

现代机器人:力学、规划与控制3-刚体运动

3 刚体运动 3.1 刚体运动的介绍 I Introduction to Rigid-Body Motions 在第三章中,我们将学习构型、速度和力的表示方法,这些内容将贯穿本书的其余部分。正如上一章所讨论的,我们将使用关于构型空间(C-space)的隐式表示。换句话说,我们的构型表示不会使用最小坐标集,速…...

第 4 周:Boost 与 Buck-Boost 的陷阱

V2设置V3设置day2...

GPU 算力翻倍,AI 反而变慢了?FlashAttention-4 给出了惊人的答案

如果你最近在关注大模型训练,可能会发现一个很反常的现象。GPU 一代比一代强。算力翻倍、Tensor Core 更快、AI 芯片越来越猛。但很多研究人员却发现: 模型训练速度并没有等比例提升。 问题出在哪里?答案其实藏在一个很多人忽略的地方&…...

基于智慧校园的大学生综合能力测评系统毕业论文+PPT(附源代码+演示视频)

文章目录 一、项目简介1.1 运行视频1.2 🚀 项目技术栈1.3 ✅ 环境要求说明 前台运行截图后台运行截图项目部署源码下载 一、项目简介 项目基于SpringBoot框架,前后端分离架构,后端为SpringBoot前端Vue。本研究旨在设计并实现一个基于智慧校园…...

金融问答合规最后窗口期:Dify 0.12+版本强制启用的3项新审计日志字段,错过将无法通过Q3银保监现场检查

第一章:金融问答合规最后窗口期的监管背景与紧迫性近年来,金融行业智能问答系统爆发式增长,但其输出内容的准确性、可追溯性与风险提示完整性持续引发监管关注。2023年10月《金融领域生成式人工智能应用监管指引(试行)…...