Soul網關websocket同步數據

websocket同步數據

初始化屬性部分

首先啓動soul-admin項目,然後啓動soul-boostrap項目,可以明顯發現websocket連接成功
file
奇怪的是,使用昨天測試SpringCloud的數據庫發現webosocket無法連接成功。後續可以繼續嘗試下這種問題發生的原因

分析pom文件的依賴可知。由於soul-boostrap是springboot項目,所以websocket相關的配置是從soul-spring-boot-starter-sync-data-websocket加載
file
這個例子中涉及到starter相關的知識不做解讀了。在這個configration中通過注入bean注入了websocket的配置以及幾個空的訂閱器包括插件訂閱器pluginSubscriber,元數據訂閱器metaSubscribers和認證訂閱器authSubscribers用來監聽admin項目的數據的改變。
此處的websocketConfig屬性由配置文件注入。其他屬性特別是pluginSubscriber數據的ObjectProvider是Spring4.3之後的一個新特性。簡單來說就是可以代替@Autowired的作用。具體的示例,可以參考https://www.cnblogs.com/fightingting/p/14300409.html 和 https://www.cnblogs.com/fengxueyi/p/13888562.html

數據準備和連接部分

file
從代碼可以看到。對於websocket這一塊。做好了多個websocket的連接的做法。隨後阻塞的連接每個客戶端。然後利用線程池每隔30秒檢測是否關閉。關閉的話回去嘗試重連接。如果不能重新連接會拋出錯誤

發送消息部分

關於websocket發送消息的部分,我之前使用spring-websocket做過一個類似的案例https://zhaozhen.blog.csdn.net/article/details/80356392 。其實主要就是利用onMessage來傳遞數據。即在修改時由admin發送數據。隨後網關部分做相應操作
file
接下來有了這樣的問題。接收到了數據之後WebsocketDataHandler的executor並沒有實現什麼實際的操作,這個需要後續在組件操作時繼續研究

問題

  • 在保存有其他同步機制的情況下,websocket的通信問題
  • 數據變化時WebsocketDataHandler的executor會做什麼樣的操作

歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】和公衆號【微瞰技術】,以及總結的分類面試題https://github.com/zhendiao/JavaInterview

file
file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章