前言
昨天的文章写到 admin(server端) 的 WebsocketCollector 发送了websocket请求,那今天就是bootstrap (client端)的处理情况
数据同步方式,bootstrap(client端)
图:bootstrap 处理websocket的整体流程
-
引入对应的starter
图:bootstrap引入starter:
soul-spring-boot-starter-sync-data-websocket -
初始化
图;starter 中的配置类
WebsocketSyncDataConfiguration
spring.factories 是starter 用来实现引入外部Bean的配置文件,与@configuration + @Bean 作用一致
先启动admin --> 后启动bootstrap
启动bootstrap后会自动建立websocket连接,如果只启动admin的话,会报错
图:连接失败报错信息
图:
WebsocketSyncDataConfiguration返回WebsocketSyncDataService
图:
WebsocketSyncDataService 初始化时获取所有注册为 Bean 的 WebsocketConfig 以及各种 DataSubscriber 订阅器, 构建实现了 WebsocketClient 的 SoulWebsocketClient 的成员变量: clients
图:初始化成功
- 同步数据
admin 操作页面上修改dubbo插件状态
图:数据最终到达了监听websocket的消息的
SoulWebsocketClient
图:最终调用 AbstractDataHandler.handle()
图:订阅者处理消息
图:更新缓存