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

SpringCloud 网关配置websocket

一、nginx

  https://域名.com

    location /websocket/ {
        proxy_pass http://172.1.1.173:8181/;   #内网网关IP
        proxy_http_version 1.1;
        proxy_read_timeout 360s;   
        proxy_redirect off;   
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection "upgrade";    #配置连接为升级连接
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

二、网关

1、routes配置

        - id: id-websocket
          uri: lb:ws://zzf-websocket
          predicates:
            - Path=/ws/**  

zzf-websocket 为websocket 微服务 服务名称

2、安全配置(白名单)
security:

   ignore:
     whites:
       - /ws/**

  

三、web

.env.production
# Websocket
VUE_APP_WS_URL = 'wss://域名.com/websocket/ws/'

vue: 

setupWebSocket() {try {this.websocket = new WebSocket(process.env.VUE_APP_WS_URL + '/orderWebsocket') // 创建WebSocket连接this.websocket.onopen = this.onWebSocketOpen // WebSocket连接打开时的处理函数this.websocket.onmessage = this.onWebSocketMessage // 收到WebSocket消息时的处理函数this.websocket.onclose = this.onWebSocketClose // WebSocket连接关闭时的处理函数} catch (e) {console.error(e)}},onWebSocketMessage(event) {const message = event.dataconsole.log('onWebSocketMessage {}',message)this.notifyOrder(message);this.$modal.notifySuccess(message);
},
onWebSocketClose() {console.log(this.reconnectCount+ ' WebSocket connection is closed')this.stopHeartbeat() // WebSocket连接关闭时,停止心跳检测if(this.reconnectCount>0){setTimeout(this.setupWebSocket, this.reconnectInterval) // 在一定时间后重连WebSocketthis.reconnectCount --;}},
startHeartbeat() {this.heartbeatInterval = setInterval(() => {if (this.websocket && this.websocket.readyState === WebSocket.OPEN) {this.websocket.send('ping') // 发送心跳消息}}, 10000) // 每10秒发送一次心跳
},
stopHeartbeat() {if (this.heartbeatInterval) {clearInterval(this.heartbeatInterval) // 停止心跳检测定时器}
},onWebSocketOpen() {console.log('链接成功')
},closeWebSocket() {if (this.websocket) {this.websocket.close() // 关闭WebSocket连接}
},

相关文章:

  • 【Bazel入门与精通】 rules之属性
  • wooyun_2015_110216-Elasticsearch-vulfocus
  • 算法:读取redis中指令查询的键
  • Ffmpeg安装和简单使用
  • CentOS 7基础操作08_Linux查找目录和文件
  • 电阻常见失效模式
  • C#操作MySQL从入门到精通(15)——分组数据
  • 实验3-单链表(优化版/王道版)
  • 前端面试题日常练-day63 【面试题】
  • 881. 救生艇
  • maven多模块项目搭建
  • Jenkins构建 Maven项目(微服务)并自动发布
  • Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)
  • ES6中如何使用class和extends关键字实现继承?
  • 基于SpringBoot二手图书管理系统
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2017-08-04 前端日报
  • 5、React组件事件详解
  • Angular4 模板式表单用法以及验证
  • Bootstrap JS插件Alert源码分析
  • ComponentOne 2017 V2版本正式发布
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Javascript 原型链
  • Javascript设计模式学习之Observer(观察者)模式
  • PaddlePaddle-GitHub的正确打开姿势
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 读懂package.json -- 依赖管理
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端性能优化——回流与重绘
  • 设计模式 开闭原则
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​linux启动进程的方式
  • ​ssh免密码登录设置及问题总结
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (12)Linux 常见的三种进程状态
  • (7)STL算法之交换赋值
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)计算机毕业设计ssm电影分享网站
  • (回溯) LeetCode 77. 组合
  • (七)Activiti-modeler中文支持
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四) Graphivz 颜色选择
  • (四)js前端开发中设计模式之工厂方法模式
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)scrum常见工具列表
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***原理与防范