開源即時通訊GGTalk 8.0發佈,增加Linux客戶端,支持在統信UOS、銀河麒麟上運行!

  GGTalk在2021年推出7.0後,經過一年多時間的開發,終於推出8.0版本,實現了Linux客戶端。

  這幾年,信創國產化的勢頭越來越猛,政府事企業單位都在逐步轉向使用國產OS、國產CPU、國產數據庫。在接單的時候,也有客戶要求GGTalk能支持國產Linux系統。於是,就逐漸有了要為GGTalk增加Linux端的想法。

      還記得在2020年就嘗試過使用Avalonia來開發GGTalk的Linux客戶端,當時還寫了一篇博客《國產化即時通信系統開發 — 使用Avalonia實現GGTalk的UI界面(Linux、Ubuntu、UOS、中標麒麟)》,後面經測試,發現當時Avalonia的版本在國產OS上對中文的支持有問題,出現亂碼,於是就放棄了Avalonia,改用國人開發的跨平台UI框架CPF。經過一年多的開發(斷斷續續地),GGTalk Linux端的功能基本完整了,現在放出來跟大家分享。也算是兌現了當初對好幾個GGTalk開發者的承諾(只是日期延後了很多,抱歉)。

一. V8.0版本變更

     相比於7.0,這次版本變更的主要內容如下:

(1)增加Linux客戶端,支持國產操作系統(如統信UOS、銀河麒麟、中標麒麟、深度等)、國產CPU(如龍芯、鯤鵬、飛騰、麒麟、兆芯等)。

(2)增加Linux服務端,支持在CentOS上部署運行服務端。

(3)增加支持同一賬號在多個設備上(Windows、Linux、Android、iOS)同時登錄,消息自動在多端間同步。

(4)手機端功能更完整,幾乎達到PC端功能的90%。

  廢話不多說,先上張GGTalk  8.0在銀河麒麟系統上運行的截圖:   

       

二. 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 源碼目錄說明

  從本文文末下載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數據庫的腳本。

四. GGTalk  8.0 數據庫表說明

(1)GGUser :用戶表,所有註冊用戶都保存在該表中。

(2)GGGroup :群組表,所有創建的群都保存在該表中。

(3)OfflineMessage :離線消息表,當目標用戶不在線時,發送給他的消息存在該表中。

(4)OfflineFileItem :離線文件表,當目標用戶不在線時,發送給他的文件對應的記錄存在該表中。

(5)GroupBan :群禁言表,當群中的用戶被禁言時,對應的記錄將存在該表中。

(6)ChatMessageRecord :聊天記錄表,一對一的聊天記錄、群聊天記錄都存在該表中。

(7)AddFriendRequest :加好友請求表,所有添加好友的請求消息都存在該表中。

(8)AddGroupRequest :入群請求表,所有申請入群的請求消息都存在該表中。

(9)GGConfiguration  : 配置表,用於預留存儲與GGTalk相關的配置信息。

五. GGTalk 8.0 部署說明 

  下面我們說明一下如何部署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的密碼。

  後續其它的步驟就與虛擬數據庫是一樣的了。  

 

六. GGTalk 8.0 源碼下載

(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

   如果你覺得還不錯,請點贊支持啊!謝謝。