Golang 網絡編程實現的高併發聊天程序

獻上代碼,聊表敬意

github.com/ItsWewin/go…git

目前功能較少,歡迎 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
複製代碼

本地運行本項目(Unix 系統下)

下載項目

下載項目到本地的 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聊天能夠嘗試下把程度搭建在本身的服務器上,喊上你的道友們用這個軟件來聊天【手動補個捂臉的表情包】)微信

項目概況

項目目前實現了以下功能:網絡

  1. 用戶註冊、登錄
  2. 顯示全部在線用戶列表
  3. 發送羣消息(目前是發送給在線的全部用戶)
  4. 私聊某一個用戶
  5. 按照消息的類型(info, notice, warn, error, success) 使用不一樣的顏色打印消息(Unix 和 window 均支持)
  6. 其餘的有空再繼續擴展... (歡迎提 issue,issue 提到的優先實現)

項目效果圖

註冊

sign-up

登錄

sign-in

顯示在線用戶列表

online-user-list

羣聊

group-message-1.png
group-message-2.png

私聊

point-to-point.png
point-to-point2.png
相關文章
相關標籤/搜索