写点什么

Soul 源码阅读 03|WebSocket 同步数据分析

用户头像
哼干嘛
关注
发布于: 2021 年 01 月 23 日

一、同步的数据有那些?

  • Plugin

  • Selector

  • Rule

  • AppAuth

  • MetaData

二、什么时候会触发同步数据

1. 初次建立连接时

在初次建立连接的时候,网关会向 soul-admin 发送消息触发同步全量数据

  • 网关

@Overridepublic void onOpen(final ServerHandshake serverHandshake) {  if (!alreadySync) {    send(DataEventTypeEnum.MYSELF.name()); //发送需要同步数据的消息    alreadySync = true;  }}
复制代码
  • soul-admin

@OnMessagepublic void onMessage(final String message, final Session session) {  // 接收到网关发来的消息后,同步全量数据给网关  if (message.equals(DataEventTypeEnum.MYSELF.name())) {    try {      ThreadLocalUtil.put(SESSION_KEY, session);      SpringBeanUtils.getInstance().getBean(SyncDataService.class).syncAll(DataEventTypeEnum.MYSELF);    } finally {      ThreadLocalUtil.clear();    }  }}
复制代码


2. 用户对需要同步的数据有增删改查操作时

通过 ApplicationEventPublisher 发布事件

流程图


发布于: 2021 年 01 月 23 日阅读数: 34
用户头像

哼干嘛

关注

早日自由! 2018.09.30 加入

本职工作是后端开发,偶尔也写写前端和小程序

评论

发布
暂无评论
Soul 源码阅读 03|WebSocket 同步数据分析