目前功能較少,歡迎 issue 中提你想要的功能,issue 中要求的功能,優先添加。歡迎吐槽或 stargithub
這是使用 Golang 網絡編程實現的一個多人在線聊天程序,使用 goroutine 達到高併發的效果,使用 redis 來保存用戶的註冊信息redis
項目由服務端和客戶端兩部分組成,服務端和客戶端代碼基本獨立,server 目錄下是服務端代碼,client 目錄下是客戶端代碼,commen 目錄下的包由服務端和客戶端共同使用編程
項目目錄結構以下:bash
.
├── README.md
├── client // 客戶端代碼
│ ├── logger // 自定義的日誌打印器
│ │ └── logger.go
│ ├── main.go // 主函數
│ ├── model // model 層
│ │ └── user.go
│ ├── process // 處理與服務器端的鏈接,收發消息
│ │ ├── messageProcess.go
│ │ ├── serverProcess.go
│ │ └── userProcess.go
│ └── utils
│ └── utils.go
├── commen // 客戶端和服務端公用代碼,主要用來定義客戶端和服務端之間通訊約定的消息
│ └── message
│ └── message.go
└── server // 服務端代碼
├── main // 主函數
│ ├── main.go
│ └── redis.go
├── model // model 層
│ ├── clientConn.go
│ ├── error.go
│ ├── user.go
│ └── userDao.go
├── process // 處理與客戶端的鏈接,收發消息
│ ├── groupMessageProcess.go // 處理羣消息
│ ├── onlineInfoProcess.go // 顯示在線用戶
│ ├── pointToPointMessageProcess.go // 處理點對點聊天消息
│ ├── processor.go // 消息處理器入口
│ └── userProcess.go // 處理和用戶登錄註冊相關消息
└── utils
└── utils.go
複製代碼
下載項目到本地的 GOPATH 目錄下(後面會提供 go get 的方式以方便使用),因爲這是 Golang 項目,因此須要你本地有 Golang 的運行環境服務器
cd ${GOPATH}/src
git clone git@github.com:ItsWewin/go-chat.git
複製代碼
go build -o server go-chat/server/main
./server
複製代碼
go build -o server go-chat/server/main
./server
複製代碼
這樣就大功告成,你就能夠在本地體驗本項目了(ps:你要是不想用微信或者QQ聊天能夠嘗試下把程度搭建在本身的服務器上,喊上你的道友們用這個軟件來聊天【手動補個捂臉的表情包】)微信
項目目前實現了以下功能:網絡