delphi + redis 實現即時消息


按客戶的要求,開了軟件自動升級功能,每次上傳完升級包都要給客戶那邊的負責人發微信說一聲。

有時人家擱會議室一待就是一上午,基本聯系不上,想了下,反正擱會議室也是討論這個軟件,

干脆給開個提醒升級的功能就完了。

結合redis的pub/sub機制,加上無所不能的Delphi, 最終達到目的。

知道redis牛,但實際沒咋用過,只是一知半解。剛好借機學習下。

下載安裝包,https://github.com/MicrosoftArchive/redis/releases

一路next,安裝完,中間有個默認添加到環境變量PATH中的勾,默認沒勾,為了少出幺蛾子,也給打上了。

默認端口6379,查了下,這也算個彩蛋,原來大牛們玩梗都能玩的這么高級 ^_^

 

敲完了代碼,本以為能一次性通過,結果報TCP連接失敗。

跟客戶的網管哥們確認端口是開放了的,趕緊查了下資料,說是外網(非redis服務器本機)要建立連接,得改一下配置文件里的參數。

默認路徑安裝的話,配置文件擱這:

並且有倆,這是碰上的第一個坑,也就是上邊安裝時改了默認端口,用了哥們給開的指定的端口,

坑1: 只改了redis.windows.conf中的port, 重啟了數次redis服務,就是不起效,

后來打開redis服務的屬性一瞅,原來默認走的是下邊那個配置文件

趕緊改完

結果還是不行,服務器本機沒啥問題,自己的電腦就是連不了,再問度娘,填上坑2

坑2, 把這個bind注釋掉就完了

繼續坑3,因為用的是客戶的雲服務器,按資料上說的,為了安全,主要也是為了練手敲一下命令行,設置了密碼:

結果中間因為其他原因重啟redis服務,發現白瞎了。

還得是找度娘幫忙,大佬們的知乎給了解答,簡單概括就是:通過命令行設置是臨時的,要永久改還是得去改配置文件

自此,這算是實現了本次的目標。

To-Do:

1. 彈窗的按鈕再擴展下,顯示個頭像啥的,體驗能更好點;

2. 訂閱消息的消息體再擴展下,因為A、B、C雖然都訂閱了同一個頻道,但是解析時一瞅這是人家A發給B的情書,C也就別厚着臉皮偷看了。

不知道這個思路合適不,但是既然說redis的I/O那么牛,再說目前這個內部用的軟件的用戶量目前就百十號人。這個應該算最皮毛的吧。

可行的話,這不就實現了軟件內的通訊?想想挺美,之前用 TIdUDPServer 實現過類似功能,但是總覺復雜了點,不爽。

-----------------------------------------------------------------------------

繼續坑4:后續實際使用過程中,客戶反饋軟件運行一段時間后,收不到消息。跟進發現是Socket連接斷開。報錯:

Socket Error # 10053.Software caused connection abort. 之類的。

看了篇介紹redis配置文件的公眾號文章,發現了個參數,默認值是0,按說明設置為60,就可以了。

-----------------------------------------------------------------------------

按自己的思路,目前軟件的(1)升級提醒、(2)內部通訊、(3)登錄登出提醒及在線、離線列表、(4)在B客戶端登錄后自動把已在登錄在A客戶端的相同賬號踢掉(強制下線),這些基本的功能都實現了一遍。目前看,客戶那邊實際的用戶50+人,日常用着也沒出啥問題。咋簡單咋整吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM