配置springcloud 网关gateway 转发websocket请求

网关是整个项目的统一入口

这是直接访问消息服务的请求路径 端口号是20007

WebSocketService.init("ws://127.0.0.1:20007/ws/" + 用户id)

显然这样是不符合微服务的方案,所有请求必须经过网关处理,转发到各个服务之中

所以我们需要在网关中的yml或者nacos中添加以下配置

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 启用服务发现
          lower-case-service-id: true
      routes:
        - id: 消息模块-websocket
          uri: lb:ws://cloud-message
          # uri: lb:ws://127.0.0.1:20007
          predicates:
            - Path=/ws/**

  

  1. id: id是一个字符串,用于唯一标识一个路由。它是可选的,但建议为每个路由提供一个有意义的ID,以便于管理和诊断。

  2. uri: uri属性指定了下游服务的URL。它可以是一个绝对URL,也可以是一个相对于网关的相对URL。在微服务架构中,通常会使用服务注册和发现机制(如Eureka)来动态获取服务实例的地址。

  3. predicates: predicates是一个条件列表,用于匹配传入的HTTP请求。每个条件都是一个谓词(Predicate),可以基于请求的各种属性进行匹配,例如请求方法(GET、POST等)、路径模式、查询参数、头信息等。如果请求满足所有谓词条件,那么它就会被路由到该路由配置的下游服务。

  4. filters: filters是一个过滤器列表,用于在请求被转发到下游服务之前或响应返回给客户端之前对请求和响应进行处理。过滤器可以是内置的(如StripPrefix、Retry等),也可以是自定义的。过滤器可以修改请求和响应的内容、添加或删除头信息、执行安全检查等。

前端修改为 端口号改为网关20000

WebSocketService.init("ws://127.0.0.1:20000/ws/" + 用户id)

打开浏览器开发者工具效果 101 成功

效果图

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud作为基于Spring Boot的微服务框架,为解决微服务中的通信、服务治理、负载均衡等问题提供了良好的解决方案。其中,Spring Cloud网关是实现微服务架构中请求分发和负载均衡的重要组件。 在Spring Cloud网关中,基于Zuul和Spring Cloud Gateway两种方案,可以实现对外的负载均衡配置。其中,采用Zuul的方式进行负载均衡的实现相对简单,但是功能相对较弱;而采用Spring Cloud Gateway方式实现的负载均衡则更加强大,也得到了更多的应用。 Spring Cloud GatewaySpring Cloud生态中提供的一个新的网关解决方案,相比于Zuul,它的性能更高、更易扩展,并且还支持WebSocket。 在实现Spring Cloud Gateway的负载均衡功能时,需要在配置文件中指定所使用的负载均衡策略,例如: ``` spring: cloud: gateway: routes: - id: service1 uri: lb://service1 predicates: - Path=/service1/** filters: - StripPrefix=1 lb: client-name: service1 rule-config: RoundRobinLoadBalancer ``` 具体来说,上述配置文件中,路由规则为请求/service1/**会被转发到URI为lb://service1的微服务上,其中lb表示负载均衡策略,client-name表示微服务的名称,rule-config表示所使用的负载均衡算法。 除此之外,还可以通过添加Eureka Server以及Ribbon等依赖来进一步优化Spring Cloud Gateway的负载均衡能力,这样可以将服务注册在Eureka上,然后将IP地址分散在多台机器上,实现更好的负载均衡效果。 综上所述,Spring Cloud网关为微服务架构中的请求分发和负载均衡提供了良好的解决方案,在具体的配置时需要根据实际情况进行操作,以达到最佳的负载均衡效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值