日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

springcloudgateway轉發websocket異常解決

作者:于萬丈深淵 更新時間: 2022-05-17 編程語言

1.報錯:
io.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid subprotocol. Actual: null. Expected one of: protocol,subprotocol

這個報錯的原因是前端請求頭里面有這個:Sec-WebSocket-Protocol

按道理來講,這是前端和后端定義的子協議,即前端傳遞這個請求頭到后端,后端判斷請求頭的內容是不是一致,一致通過。

但是如果后端沒有制定相關業務邏輯那么就會報上面那個錯誤,解決辦法:去掉前端這個請求頭
添加:

          filters:
#            - AddRequestHeader=Sec-WebSocket-Protocol,chat  #添加請求頭
            - RemoveRequestHeader=Sec-WebSocket-Protocol #移除請求頭

完整代碼如下

spring:
  profiles:
    active: @spring.profiles.active@
  application:
    name: hashring-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #開啟從注冊中心動態創建路由的功能,利用微服務名進行路由
      routes:
        - id: gateway-websocket    #websocket 鏈接轉發      #路由的ID,沒有固定規則但要求唯一,建議配合服務名
          #uri: http://localhost:8001          #匹配后提供服務的路由地址
          uri: lb:ws://websocket #匹配后提供服務的路由地址
#          uri: ws://127.0.0.1:3309 #匹配后提供服務的路由地址

          predicates:
           - Path=/socket/*     # 斷言,路徑相匹配的進行路由
          filters:
#            - AddRequestHeader=Sec-WebSocket-Protocol,chat  #添加請求頭
            - RemoveRequestHeader=Sec-WebSocket-Protocol #移除請求頭

原文鏈接:https://blog.csdn.net/weixin_42714698/article/details/122951339

欄目分類
最近更新