GGTalk在2021年推出7.0後,經過一年多時間的開發,終於推出8.0版本,實現了Linux使用者端。(關於GG更詳細的介紹,可以檢視 可在廣域網部署執行的QQ高仿版 -- GGTalk總覽。)
這幾年,信創國產化的勢頭越來越猛,政府事企業單位都在逐步轉向使用國產OS、國產CPU、國產資料庫。在接單的時候,也有客戶要求GGTalk能支援國產Linux系統。於是,就逐漸有了要為GGTalk增加Linux端的想法。
還記得在2020年就嘗試過使用Avalonia來開發GGTalk的Linux使用者端,當時還寫了一篇部落格《國產化即時通訊系統開發 -- 使用Avalonia實現GGTalk的UI介面(Linux、Ubuntu、UOS、中標麒麟)》,後面經測試,發現當時Avalonia的版本在國產OS上對中文的支援有問題,出現亂碼,於是就放棄了Avalonia,改用國人開發的跨平臺UI框架CPF。經過一年多的開發(斷斷續續地),GGTalk Linux端的功能基本完整了,現在放出來跟大家分享。也算是兌現了當初對好幾個GGTalk開發者的承諾(只是日期延後了很多,抱歉)。
相比於7.0,這次版本變更的主要內容如下:
(1)增加Linux使用者端,支援國產作業系統(如統信UOS、銀河麒麟、中標麒麟、深度等)、國產CPU(如龍芯、鯤鵬、飛騰、麒麟、兆芯等)。
(2)增加Linux伺服器端,支援在CentOS上部署執行伺服器端。
(3)增加支援同一賬號在多個裝置上(Windows、Linux、Android、iOS)同時登入,訊息自動在多端間同步。
(4)手機端功能更完整,幾乎達到PC端功能的90%。
(5)支援高清視訊聊天(1920*1080解析度)。
廢話不多說,先上張GGTalk 8.0在銀河麒麟系統上執行的截圖:
總的說來,GGTalk 8.0的伺服器端有Windows版本和Linux版本,使用者端版本有:Windows、Linux、Android、iOS。
涉及到的開發語言有:C#、Java、Objective-C
涉及到的開發環境有:Visual Studio、Android Studio、XCode。
眼尖的同學已經發現,我們的Linux伺服器端和Linux使用者端都是基於.NetCore的,用的都是C#。(真是大愛C#,自認為是最優雅的語言。在想後面是不是把手機端也用Xamarin重寫了?這樣就全部統一為C#了)
GGTalk 8.0 各個端所需的作業系統版本、執行時、開發環境、開發語言的詳細說明如下列表所示:
GGTalk 8.0對資料庫的支援除了SqlServer和MySql外,也是支援國產資料庫的,像達夢資料庫、南大通用等。
從本文文末下載GGTalk 8.0的原始碼,可以看到有三個壓縮包:
(1)GGTalk_V8.0.rar :這個壓縮包中主要是一個VS的解決方案,下面有GGTalk 8.0的Windows和Linux版本的伺服器端,以及Windows和Linux版本的使用者端。
(2)GGTalk_V8.0_Android.rar :這個壓縮包裡面是GGTalk 8.0的安卓端原始碼。
(3)GGTalk_V8.0_iOS.zip:這個壓縮包裡面是GGTalk 8.0的iOS端原始碼。
(4)GGTalk_V8.0_Deploy.rar :可直接部署的GGTalk 8.0 版本,包括伺服器端、使用者端、手機端的可以執行包。
GGTalk的VS的解決方案下的專案比較多,這裡簡單說明一下,如下圖所示:
NetCore目錄下的放的都是與Linux版本相關的專案。我們重點關注紅框標記出的四個專案:
GGTalk:是GGTalk 8.0的Windows使用者端。
GGTalk.Server :是GGTalk 8.0的Windows伺服器端。
GGTalk.Linux:是GGTalk 8.0的Linux使用者端。
GGTalk.Server.NetCore :是GGTalk 8.0的Linux伺服器端。
資料庫指令碼:在該資料夾中,有GGTalk 8.0的SqlServer資料庫的指令碼和MySql資料庫的指令碼。
(1)GGUser :使用者表,所有註冊使用者都儲存在該表中。
(2)GGGroup :群組表,所有建立的群都儲存在該表中。
(3)OfflineMessage :離線訊息表,當目標使用者不線上時,傳送給他的訊息存在該表中。
(4)OfflineFileItem :離線檔案表,當目標使用者不線上時,傳送給他的檔案對應的記錄存在該表中。
(5)GroupBan :群禁言表,當群中的使用者被禁言時,對應的記錄將存在該表中。
(6)ChatMessageRecord :聊天記錄表,一對一的聊天記錄、群聊天記錄都存在該表中。
(7)AddFriendRequest :加好友請求表,所有新增好友的請求訊息都存在該表中。
(8)AddGroupRequest :入群請求表,所有申請入群的請求訊息都存在該表中。
(9)GGConfiguration : 設定表,用於預留儲存與GGTalk相關的設定資訊。
下面我們說明一下如何部署GGTalk_V8.0_Deploy.rar壓縮包中的可直接執行的各個端。
(1)伺服器端預設設定是使用記憶體虛擬資料庫,不需要真實資料庫,這樣方便測試。
(2)Windows 伺服器端:將GGTalk.Server資料夾拷貝到伺服器上,執行 GGTalk.Server.exe。
(3)Linux 伺服器端:將GGTalk.Server.Linux資料夾拷貝到CentOS伺服器上,進入該資料夾,開啟終端,執行命令:dotnet GGTalk.Server.NetCore.dll。
注:GGTalk Windows伺服器端或Linux伺服器端只要啟動一個就可以的,所有型別使用者端都可以連到這個啟動的伺服器端。
(4)Windows 使用者端:修改GGTalk目錄下的使用者端組態檔GGTalk.exe.config中ServerIP設定項的值為伺服器的IP,雙擊GGTalk.exe執行使用者端,註冊帳號登入試用。。
(5)Linux 使用者端:將GGTalk.Linux資料夾拷貝到國產Linux系統(Ubuntu也可以)上,進入該資料夾,開啟終端,執行命令:dotnet GGTalk.Linux.dll。
注:如果Linux電腦的CPU不是x86/x64架構的,則需要使用對應架構的libe_sqlite3.so、libSkiaSharp.so來替換執行目錄下的同名檔案。可聯絡我獲取其它架構的so庫。
(6)手機端:將對應的apk或ipa包在手機上安裝,啟動後,在登入介面設定伺服器的IP地址,即可登入。
(7)記憶體虛擬資料庫內建了測試帳號: 10000,10001,10002,10003,10004,一直到10009;密碼都是 1。
如果需要使用真實的物理資料庫,則需按下列步驟進行:
(1)在SqlServer 2008+ 中新建資料庫 GGTalk,然後在該庫中執行 SqlServer.sql 檔案中的指令碼以建立所需表。
(如果要使用MySQL資料庫,則使用MySQL.sql指令碼)
(2)開啟伺服器端的組態檔GGTalk.Server.exe.config
(1)修改 UseVirtualDB 設定項的值為false。
(2)修改 DBType 為 SqlServer 或 MySQL。
(3)修改 DBIP 設定項的值為資料庫的IP地址。
(4)修改 DBPwd 設定項的值為資料庫管理員sa的密碼。
後續其它的步驟就與虛擬資料庫是一樣的了。
(1)Windows 伺服器端、使用者端 + Linux 伺服器端、使用者端:GGTalk_V8.0.rar (提取碼: 1234)
(2)Android 端:GGTalk_V8.0_Android.rar (提取碼: 1234)
(3)iOS 端:GGTalk_V8.0_iOS.zip (提取碼: 1234)
(4)可直接部署執行:GGTalk_V8.0_Deploy.rar (提取碼: 1234)
如果你覺得還不錯,請點贊支援啊!謝謝。