- 启动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同步通信机制已经理清。学习源码是一个不断进步的过程,学习优秀的设计模式和借鉴优雅的代码风格对程序员的成长大有裨益。