開源跨平臺即時通訊GGTalk源碼剖析之:概述
GGTalk 服務(wù)端支持:Windows、Linux、國產(chǎn)OS
GGTalk 客戶端支持:Windows、Linux、國產(chǎn)OS、Android、iOS
GGTalk開源即時通訊 在2021年推出Windows PC端、Android端、iOS端后,現(xiàn)在終于推出最新的8.0版本,增加了Linux客戶端,實現(xiàn)了真正的跨平臺、全平臺互通。
為什么Linux端不可或缺了?這幾年,信創(chuàng)國產(chǎn)化的勢頭越來越猛,政府事企業(yè)單位都在逐步轉(zhuǎn)向使用國產(chǎn)OS、國產(chǎn)CPU、國產(chǎn)數(shù)據(jù)庫。在接單的時候,也有客戶要求GGTalk能支持國產(chǎn)Linux系統(tǒng)。于是,就逐漸有了要為GGTalk增加Linux端的想法。經(jīng)過一年多的開發(fā),GGTalk Linux端的功能基本完整了,支持在搭載了國產(chǎn)芯片的國產(chǎn)操作系統(tǒng)上運行,并支持國產(chǎn)數(shù)據(jù)庫。
在GGTalk能支持跨平臺的情況下,了解和使用GGTalk的朋友越來越多,于是,我就打算寫一個系列的文章來完整地介紹GGTalk的方方面面,專題的名字就叫做《GGTalk源碼剖析》吧。這個《GGTalk源碼剖析》系列的文章將基于最新的 GGTalk V8.0 進行。
廢話不多說,先上張GGTalk 8.0在國產(chǎn)銀河麒麟系統(tǒng)上運行的截圖(在Windows上運行的UI界面完全相同):

再來張GGTalk ?8.0 手機端截圖:

一. GGTalk 8.0 支持的主要平臺
GGTalk V8.0 服務(wù)端支持 Windows、Linux。
客戶端支持 Windows、Android、iOS、Linux、以及銀河麒麟、統(tǒng)信UOS等國產(chǎn)操作系統(tǒng)。
數(shù)據(jù)庫支持 SqlServer、MySql、以及達夢數(shù)據(jù)庫、人大金倉、南大通用等國產(chǎn)數(shù)據(jù)庫。
還沒有GGTalk源碼的朋友,可以到 GGTalk源碼下載中心?下載。
二. GGTalk 8.0 所需的開發(fā)、部署、運行環(huán)境
總的說來,GGTalk 8.0的服務(wù)端有Windows版本和Linux版本,客戶端版本有:Windows、Linux、Android、iOS。
涉及到的開發(fā)語言有:C#、Java、Objective-C
涉及到的開發(fā)環(huán)境有:Visual Studio、Android Studio、XCode。
眼尖的同學(xué)已經(jīng)發(fā)現(xiàn),我們的Linux服務(wù)端和Linux客戶端都是基于.NetCore的,用的都是C#。(真是大愛C#,自認(rèn)為是最優(yōu)雅的語言。)
GGTalk 8.0 各個端所需的操作系統(tǒng)版本、運行時、開發(fā)環(huán)境、開發(fā)語言的詳細說明如下列表所示:

GGTalk 8.0對數(shù)據(jù)庫的支持除了SqlServer和MySql外,也是支持國產(chǎn)數(shù)據(jù)庫的,像達夢數(shù)據(jù)庫、南大通用等。
三. GGTalk 8.0 源碼目錄說明
從本文文末下載GGTalk 8.0的源碼,可以看到有三個壓縮包:
(1)GGTalk_V8.0.rar :這個壓縮包中主要是一個VS的解決方案,下面有GGTalk 8.0的Windows和Linux版本的服務(wù)端,以及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 版本,包括服務(wù)端、客戶端、手機端的可以執(zhí)行包。
GGTalk的VS的解決方案下的項目比較多,這里簡單說明一下,如下圖所示:

NetCore目錄下的放的都是與Linux版本相關(guān)的項目。我們重點關(guān)注紅框標(biāo)記出的四個項目:
GGTalk:是GGTalk 8.0的Windows客戶端。
GGTalk.Server :是GGTalk 8.0的Windows服務(wù)端?! ? ??
GGTalk.Linux:是GGTalk 8.0的Linux客戶端。
GGTalk.Server.NetCore :是GGTalk 8.0的Linux服務(wù)端。
數(shù)據(jù)庫腳本:在該文件夾中,有GGTalk 8.0的SqlServer數(shù)據(jù)庫的腳本和MySql數(shù)據(jù)庫的腳本。
四. GGTalk? 8.0 數(shù)據(jù)庫表說明
(1)GGUser :用戶表,所有注冊用戶都保存在該表中。
(2)GGGroup :群組表,所有創(chuàng)建的群都保存在該表中。
(3)OfflineMessage :離線消息表,當(dāng)目標(biāo)用戶不在線時,發(fā)送給他的消息存在該表中。
(4)OfflineFileItem :離線文件表,當(dāng)目標(biāo)用戶不在線時,發(fā)送給他的文件對應(yīng)的記錄存在該表中。
(5)GroupBan :群禁言表,當(dāng)群中的用戶被禁言時,對應(yīng)的記錄將存在該表中。
(6)ChatMessageRecord :聊天記錄表,一對一的聊天記錄、群聊天記錄都存在該表中。
(7)AddFriendRequest :加好友請求表,所有添加好友的請求消息都存在該表中。
(8)AddGroupRequest :入群請求表,所有申請入群的請求消息都存在該表中。
(9)GGConfiguration ?:配置表,用于預(yù)留存儲與GGTalk相關(guān)的配置信息。
五. GGTalk 8.0 部署說明?
下面我們說明一下如何部署GGTalk_V8.0_Deploy.rar壓縮包中的可直接運行的各個端。? ?
(1)服務(wù)端默認(rèn)配置是使用內(nèi)存虛擬數(shù)據(jù)庫,不需要真實數(shù)據(jù)庫,這樣方便測試。
(2)Windows 服務(wù)端:將GGTalk.Server文件夾拷貝到服務(wù)器上,運行 GGTalk.Server.exe。
(3)Linux 服務(wù)端:將GGTalk.Server.Linux文件夾拷貝到CentOS服務(wù)器上,進入該文件夾,打開終端,執(zhí)行命令:dotnet GGTalk.Server.NetCore.dll。
?注:GGTalk Windows服務(wù)端或Linux服務(wù)端只要啟動一個就可以的,所有類型客戶端都可以連到這個啟動的服務(wù)端。
(4)Windows 客戶端:修改GGTalk目錄下的客戶端配置文件GGTalk.exe.config中ServerIP配置項的值為服務(wù)器的IP,雙擊GGTalk.exe運行客戶端,注冊帳號登錄試用。。
(5)Linux ?客戶端:將GGTalk.Linux文件夾拷貝到國產(chǎn)Linux系統(tǒng)(Ubuntu也可以)上,進入該文件夾,打開終端,執(zhí)行命令:dotnet GGTalk.Linux.dll。
如果安裝了.Net Core,仍然提示找不到dotnet命令,則需要把dotnet的可執(zhí)行文件做一個軟鏈接,放到usr/bin下面。
注:如果Linux電腦的CPU不是x86/x64架構(gòu)的,則需要使用對應(yīng)架構(gòu)的libe_sqlite3.so、libSkiaSharp.so來替換運行目錄下的同名文件。可聯(lián)系我獲取其它架構(gòu)的so庫。
(6)手機端:將對應(yīng)的apk或ipa包在手機上安裝,啟動后,在登錄界面設(shè)置服務(wù)器的IP地址,即可登錄。
(7)內(nèi)存虛擬數(shù)據(jù)庫內(nèi)置了測試帳號:10000,10001,10002,10003,10004,一直到10009;密碼都是 1。?
如果需要使用真實的物理數(shù)據(jù)庫,則需按下列步驟進行:
(1)在SqlServer ?2008+ 中新建數(shù)據(jù)庫 GGTalk,然后在該庫中執(zhí)行 SqlServer.sql 文件中的腳本以創(chuàng)建所需表。?(如果要使用MySQL數(shù)據(jù)庫,則使用MySQL.sql腳本)
(2)打開服務(wù)端的配置文件GGTalk.Server.exe.config。(Linux服務(wù)端對應(yīng)的文件是 GGTalk.Server.NetCore.dll.config )
?修改 UseVirtualDB 配置項的值為false。?
?修改 DBType 為 SqlServer 或 MySQL。?
?修改 DBIP 配置項的值為數(shù)據(jù)庫的IP地址。?
?修改 DBPwd 配置項的值為數(shù)據(jù)庫管理員sa的密碼。
后續(xù)其它的步驟就與虛擬數(shù)據(jù)庫是一樣的了。?? ?
六. GGTalk 8.0 源碼下載
復(fù)制下面鏈接下載GGTalk 8.0 版本源碼。
https://www.cnblogs.com/justnow/p/4990065.html
作為《GGTalk源碼剖析》的第一篇,差不多就這樣了。在接下來的一篇我們將介紹GGTalk數(shù)據(jù)庫設(shè)計。
敬請期待:《開源跨平臺即時通訊GGTalk源碼剖析之:數(shù)據(jù)庫設(shè)計》