1. 概述
1.1 插件名称
- Websocket 插件
1.2 适用场景
- 转发场景,处理 websocket协议 请求,将其转发到后端其他 websocket 协议的服务
- 服务负载均衡
1.3 插件功能
- 支持根据 host、uri、query 等请求信息做流量的治理
- 支持设置请求的负载均衡策略,同时支持服务预热,目前支持三种策略:ip hash(带虚拟节点的一致性哈希)、round-robbin(加权轮询)、random(加权随机)
- 支持设置接口级别请求超时时间
- 支持设置超时重试次数
1.4 插件代码
- 核心模块
shenyu-plugin-websocket - 核心类
org.apache.shenyu.plugin.websocket.WebSocketPlugin
1.5 添加自哪个shenyu版本
- 2.4.3
2. 如何使用插件
2.1 插件使用流程图

名词解释
- shenyu 网关:包含 shenyu-admin 和 shenyu-bootstrap 服务。
- 客户端项目:后端真实 websocket 服务
流程解释
- 启动 shenyu 网关服务:参照运维部署,启动 shenyu-admin 和 shenyu-bootstrap,确保 shenyu 网关服务正常
- 在 shenyu-admin 中启用 websocket 插件:在 shenyu-admin 插件管理的页面中开启 websocket 插件
- 配置和启动客户端项目:启动客户端项目(后端真实 websocket 服务),并将服务信息配置到 shenyu 网关中,分为手动配置和自动配置两种方式
- 检查转发是否正常:检查转发能否成功
2.2 启用插件
- 在 shenyu-admin --> 基础配置 --> 插件管理 --> websocket 设置为开启。

2.3 配置客户端服务
2.3.1 手动配置
在 shenyu-admin 页面上手动配置客户端服务,后端服务不需要任何改动,即可实现 websocket 协议转发
- Websocket 插件中添加选择器

- Websocket 插件中添加规则

-
启动客户端项目(后端 websocket 服务)
-
测试服务转发是否成功
- 测试代码见附件5.1

2.3.2 自动配置
如果某些场景你需要通过自动配置来减少工作量,可以在后端服务中增加注解,实现自动配置服务到 shenyu 网关中
- 在后端服务项目中的 pom.xml 文件中添加插件 maven 配置。
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-websocket</artifactId>
<version>${project.version}</version>
</dependency>
- 使用
@ShenyuSpringWebSocketClient注解,该注解会将 websocket 服务自动注册到 shenyu 网关 - 调整插件配置,配置参数详情见 2.4.1
- 启动客户端项目(后端 websocket 服务),示例代码见 2.5 示例
- 检查 shenyu-admin 页面中插件列表服务注册信息是否注册成功
- 测试服务转发是否成功
- 测试代码见附件5.1
