Soul源码总结-01-20

  • 启动admin,与网关。 admin操作,使用websocket同步数据到网关
  • 记录心得并总结

Soul admin与Soul网关的websocket同步

Demo

首先启动soul-admin和soul-bootstrap项目,在soul-bootstrap控制台日志会发现在这里插入图片描述同时在soul-admin控制台发现相关日志
在这里插入图片描述
soul-admin与soul网关默认建立websocket通信,那么具体在代码中是如何实现的呢?

源码追踪

WebSocket客户端

首先我们先关注soul网关服务,在WebsocketSyncDataConfiguration类中在项目启动时将webSocketSyncDataService的bean注入到ioc容器中
在这里插入图片描述
此时需要注意的是在注册这个bean之前需要依赖名字为websocketConfig的bean,该bean的注册需要读取application-local.yml文件中相关websocket的配置

soul :
    sync:
        websocket :
             urls: ws://localhost:9095/websocket

WebsocketSyncDataService构造器中就开始websocket连接操作
在这里插入图片描述

WebSocket服务端

在soul-admin的WebsocketCollector中用@ServerEndpoint("/websocket")注解表明该类是websocket服务端的endpoint, 同时通过SESSION_SET保存客户端的session信息。
在这里插入图片描述
同时在server端的DataChangedEventDispatcher会对数据更新事件监听并作出相应的反应。
在这里插入图片描述

总结

基本上soul-admin和soul网关之间的websocket同步通信机制已经理清。学习源码是一个不断进步的过程,学习优秀的设计模式和借鉴优雅的代码风格对程序员的成长大有裨益。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页