SpringCloud Nacos Gateway 网关集成 Netty的Websocket不成功问题记录,以及解决思路记录

文章目录

  • 前言
  • websocket项目创建
  • gateWay的ws协议配置
  • 说说遇到的问题过程和解决思路
    • 1. 启动getaway服务和socket服务接口调用并没有成功;
    • 2. 排查1002原因,询问chatgpt
    • 3. 百度、cv 最后排查到原因分析:
    • 4. 手动将netty服务注册到nacos上:
    • 5. nacos服务列表出现对应的配置信息
    • 6. 调整gateway网关配置
    • 7. 请求成功
  • 总结:

前言

  • 目前项目由于导入导出业务处理时间过长;很容易连接超时,用户等待过长,体验感不佳
  • 相关业务使用http短连接请求,无法满足某些特定的业务场景,如消息通知弹窗、扫码登录
  • 故需要引入websocket
  • 因为原有项目网关是使用【springCloud-nacos-gateWay】,所以先项目websocket项目需要使用网关进行统一转发(便于管理)

websocket项目创建

有时间出个demo项目(下次一定)

在这里插入图片描述

gateWay的ws协议配置

spring:cloud:gateway:routes:- id: dh-web-socket-serviceuri: lb:ws://dh-web-socket-service:30229predicates:- Path=/CYHLW/ws/**filters:- StripPrefix=2
  • lb:是负载均衡
  • ws:代表通过websocket长连接协议,其他是gateway的常规配置

说说遇到的问题过程和解决思路

1. 启动getaway服务和socket服务接口调用并没有成功;

  1. ws升级成功2. 但是连接服务失败了

在这里插入图片描述

2. 排查1002原因,询问chatgpt

在这里插入图片描述

3. 百度、cv 最后排查到原因分析:

  1. gateway连接不上websocket服务,转发失败
  2. 我通过netty搭建websocket服务,所以项目中有两个端口,一个服务端口,一个netty端口
  3. nacos注册只注册上服务端口,netty端口没有注册上。需要手动注册

在这里插入图片描述

4. 手动将netty服务注册到nacos上:

package com.dh.websocket.core.configuration;import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;
import java.net.InetAddress;
import java.util.Properties;/*** web socket寄存器nacos配置** @author yolo* @date 2024/3/18 14:58*/
@Configuration
public class WebSocketRegisterNacosConfiguration {@Value("${netty.socket.application-name}")private String applicationName;@Value("${netty.socket.port}")private int port;@Autowiredprivate NacosDiscoveryProperties nacosDiscoveryProperties;@PostConstructpublic void start() {// 注册到Nacos里registerNamingService(applicationName, port);}/*** 注册到 nacos 服务中** @param nettyName netty服务名称* @param nettyPort netty服务端口*/private void registerNamingService(String nettyName, int nettyPort) {try {NamingService namingService = NamingFactory.createNamingService(nacosDiscoveryProperties.getNacosProperties());InetAddress address = InetAddress.getLocalHost();namingService.registerInstance(nettyName, address.getHostAddress(), nettyPort);} catch (Exception e) {throw new RuntimeException(e);}}
}

5. nacos服务列表出现对应的配置信息

在这里插入图片描述

6. 调整gateway网关配置

spring:cloud:gateway:routes:- id: dh-web-socket-serviceuri: lb://dh-web-socket-servicepredicates:- Path=/dh/wsocket-service/**filters:- StripPrefix=2- id: dh-web-socketuri: lb:ws://dh-web-socketpredicates:- Path=/dh/wsocket/**filters:- StripPrefix=2            

7. 请求成功

在这里插入图片描述

总结:

  • 后续将着手攻克Netty集群Channel共享的问题!
    在这里插入图片描述
    在这里插入图片描述
  • 有什么问题的话,留言讨论(看到就回),或者可以通过公众号后台留言交流
  • chatgpt相关了解可以通过关注公众号回复【chatgpt】即可获得 【科学上网12一年,目前使用正常,多用一天算一天】

在这里插入图片描述

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

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

相关文章

5.少儿编程51电动车防盗报警器(待优化版)

使用的模块 接线 所有模块 VCC——5V GND——GND 振动传感器 D0——P3^3 继电器 IN——P1^3 高功率喇叭 电源黑色线与喇叭黑色线相接 电源红色线与继电器COM相接 喇叭红色线与继电器NO相接 433M无线发射接收模块 D0——P1^0 D1——P1^1 代码实现 #include "reg…

[CVPR-24] Text-to-3D using Gaussian Splatting

3DGS对初始化敏感;引入基于Point-E的3D SDS可以缓解多脸问题;外观细化阶段可以有效抑制异常点,并提高可视化效果;不需要对SDS的改进,用gudiance scale100可以取得很不错的结果。 [pdf | proj | code] 方法 Geometry O…

Unload-labs-pass-03

这里是设置了黑名单不能传.asp.aspx.php.jsp文件 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(.asp,.aspx,.php,.jsp);$file_name trim($_FILES[upload_file][name]);$file_name deldot($file_name);//删…

S3fd: Single shot scale-invariant face detector

目录 摘要一、介绍二、相关工作三、单镜头尺度不变人脸检测器3.1. Scale-equitable框架3.2. 尺度补偿锚匹配策略3.3. 最大输出背景标签3.4 训练4.实验4.1. 模型分析4.2. 基准评价4.3 推理时间 5 结论 摘要 本文提出了一种实时人脸检测器,称为单镜头尺度不变人脸检测…

9成省份“鸿蒙化”,它真起来了?

自去年9月华为宣布鸿蒙原生应用全面启动以来,鸿蒙正以不可阻挡之势,快速在全国千行百业的移动应用领域推进。不仅有支付宝、快手、淘宝、京东等超200家头部互联网企业加入鸿蒙生态;2024年以来,上海、浙江、广西等多省市政务民生、…

ttkbootstrap界面美化系列之主窗口(二)

一:创建主窗口 在利用ttkbootstrap构建应用程序时,可以用tkinter传统的tk方法来创建主界面,也可以用ttkbootstrap中的window类来创建,下面我们来看看两者的区别 1,传统方法创建主界面 import tkinter as tk import …

AI论文速读 | UniST:提示赋能通用模型用于城市时空预测

本文是时空领域的统一模型——UniST,无独有偶,时序有个统一模型新工作——UniTS,感兴趣的读者也可以阅读今天发布的另外一条。 论文标题:UniST: A Prompt-Empowered Universal Model for Urban Spatio-Temporal Prediction 作者&…

C++——字符串、读写文件、结构体、枚举

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

兼顾稳定和性价比的跨国企业SD-WAN组网

随着全球业务不断扩张,跨国企业面临着跨域网络的复杂性和不稳定性带来的挑战。不同地区分支机构的数据互通和协作常常受到制约,而在网络问题出现后,排查多方问题导致高昂的部署和运维成本。尽管直连方案在表面上看似省钱,但由于不…

【Selenium(一)】

简介 Selenium是一个开源的自动化测试工具,主要用于Web应用程序的自动化测试。它支持多种浏览器,包括Chrome、Firefox、Internet Explorer等,以及多种编程语言,如Java、Python、C#、Ruby等,使得它成为Web自动化测试中…

LeetCode 热题 100

未完待续… 一、哈希 1、两数之和 # 暴力解,时间复杂度:o(n^2) class Solution(object):def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for i in range(len(nums)):fo…

【高通camera hal bug分析】高通自带相机镜像问题

首先打了两个log,一个是开启镜像的log,还有一个是没有开启镜像的log,如果我们开启镜像以后,观察开启镜像log发现 , 这段代码走的没有任何问题,因为Flip的值等于1了。 关闭镜像log如下: 如果我们不开启镜像…