springcloudgateway转发websocket异常解决
springcloudgateway转发websocket问题
·
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 #移除请求头
更多推荐
已为社区贡献1条内容
所有评论(0)