websocket同步數(shù)據(jù)
初始化屬性部分
首先啟動soul-admin項目柠并,然后啟動soul-boostrap項目,可以明顯發(fā)現(xiàn)websocket連接成功
file
奇怪的是愿伴,使用昨天測試SpringCloud的數(shù)據(jù)庫發(fā)現(xiàn)webosocket無法連接成功氛濒。后續(xù)可以繼續(xù)嘗試下這種問題發(fā)生的原因
分析pom文件的依賴可知哟忍。由于soul-boostrap是springboot項目,所以websocket相關(guān)的配置是從soul-spring-boot-starter-sync-data-websocket加載
file
這個例子中涉及到starter相關(guān)的知識不做解讀了瑟押。在這個configration中通過注入bean注入了websocket的配置以及幾個空的訂閱器包括插件訂閱器pluginSubscriber搀捷,元數(shù)據(jù)訂閱器metaSubscribers和認(rèn)證訂閱器authSubscribers用來監(jiān)聽admin項目的數(shù)據(jù)的改變。
此處的websocketConfig屬性由配置文件注入多望。其他屬性特別是pluginSubscriber數(shù)據(jù)的ObjectProvider是Spring4.3之后的一個新特性嫩舟。簡單來說就是可以代替@Autowired的作用。具體的示例怀偷,可以參考https://www.cnblogs.com/fightingting/p/14300409.html 和 https://www.cnblogs.com/fengxueyi/p/13888562.html
數(shù)據(jù)準(zhǔn)備和連接部分
file
從代碼可以看到家厌。對于websocket這一塊。做好了多個websocket的連接的做法椎工。隨后阻塞的連接每個客戶端饭于。然后利用線程池每隔30秒檢測是否關(guān)閉蜀踏。關(guān)閉的話回去嘗試重連接。如果不能重新連接會拋出錯誤
發(fā)送消息部分
關(guān)于websocket發(fā)送消息的部分掰吕,我之前使用spring-websocket做過一個類似的案例https://zhaozhen.blog.csdn.net/article/details/80356392 果覆。其實主要就是利用onMessage來傳遞數(shù)據(jù)。即在修改時由admin發(fā)送數(shù)據(jù)殖熟。隨后網(wǎng)關(guān)部分做相應(yīng)操作
file
接下來有了這樣的問題局待。接收到了數(shù)據(jù)之后WebsocketDataHandler的executor并沒有實現(xiàn)什么實際的操作,這個需要后續(xù)在組件操作時繼續(xù)研究
問題
- 在保存有其他同步機制的情況下菱属,websocket的通信問題
- 數(shù)據(jù)變化時WebsocketDataHandler的executor會做什么樣的操作
歡迎關(guān)注和點贊钳榨,以及總結(jié)的分類面試題https://github.com/zhendiao/JavaInterview