Skip to content
akrickPublic

About

mychat builded with go

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

ย 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MyChat ๅœจ็บฟๅ’จ่ฏข็ณป็ปŸ

ไธ€ไธชๅฎŒๆ•ด็š„ๅœจ็บฟๅ’จ่ฏข่Šๅคฉ็ณป็ปŸ๏ผŒๅŒ…ๅซ็”จๆˆท็ซฏใ€็ฎก็†ๅŽๅฐๅ’Œๅฎžๆ—ถ้€šไฟกๅŠŸ่ƒฝ

๐ŸŒŸ ้กน็›ฎ็ฎ€ไป‹

MyChat ๆ˜ฏไธ€ไธชๅŠŸ่ƒฝๅฎŒๆ•ด็š„ๅœจ็บฟๅ’จ่ฏขๅนณๅฐ๏ผŒๆ”ฏๆŒ็”จๆˆทไธŽๅ’จ่ฏขๅธˆ่ฟ›่กŒๅฎžๆ—ถ่Šๅคฉใ€่ฎขๅ•็ฎก็†ใ€ๅœจ็บฟๆ”ฏไป˜็ญ‰ๅŠŸ่ƒฝใ€‚

ๆ ธๅฟƒๅŠŸ่ƒฝ

  • ๐Ÿ‘ค ็”จๆˆทๆณจๅ†Œ/็™ปๅฝ•ใ€ไธชไบบ่ต„ๆ–™็ฎก็†
  • ๐Ÿ‘จโ€โš•๏ธ ๅ’จ่ฏขๅธˆ็ฎก็†ใ€ๅœจ็บฟ็Šถๆ€
  • ๐Ÿ’ฌ ๅฎžๆ—ถ่Šๅคฉใ€ๆถˆๆฏๆŽจ้€
  • ๐Ÿ“ฆ ่ฎขๅ•็ฎก็†ใ€็Šถๆ€่ทŸ่ธช
  • ๐Ÿ’ณ ๅœจ็บฟๆ”ฏไป˜๏ผˆๅพฎไฟกใ€ๆ”ฏไป˜ๅฎ๏ผ‰
  • ๐Ÿ’ฐ ่ดฆๅ•็ฎก็†ใ€ๆ็Žฐ็”ณ่ฏท
  • ๐Ÿ” ่ง’่‰ฒๆƒ้™็ฎก็† (RBAC)
  • ๐Ÿ“Š ็ปŸ่ฎกๆŠฅ่กจใ€ๆ•ฐๆฎๅˆ†ๆž
  • ๐ŸŽจ ไฝŽไปฃ็ ๅนณๅฐ

๐Ÿ—๏ธ ๆŠ€ๆœฏๆžถๆž„

ๆœๅŠกๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   ็”จๆˆท็ซฏๅบ”็”จ                          โ”‚
โ”‚  (Vue/React/ๅฐ็จ‹ๅบ/H5)                                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                         โ”‚
        โ†“ HTTP REST API           โ†“ WebSocket
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ็”จๆˆท็ซฏ API (8080) โ”‚      โ”‚WebSocket (8082)  โ”‚
โ”‚ โ€ข ็”จๆˆท/ๅ’จ่ฏขๅธˆ      โ”‚      โ”‚ โ€ข ๅฎžๆ—ถๆถˆๆฏ       โ”‚
โ”‚ โ€ข ่ฎขๅ•/ๆ”ฏไป˜        โ”‚      โ”‚ โ€ข ๅœจ็บฟ็Šถๆ€       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚   MySQL + Redis               โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ”‚
                    โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ็ฎก็†ๅŽๅฐ (admin/backend)  โ”‚
โ”‚   (็ซฏๅฃ 8081)               โ”‚
โ”‚  โ€ข ็”จๆˆท็ฎก็†                 โ”‚
โ”‚  โ€ข ่ฎขๅ•ๅฎกๆ ธ                 โ”‚
โ”‚  โ€ข ่ดขๅŠก็ฎก็†                 โ”‚
โ”‚  โ€ข ็ณป็ปŸ้…็ฝฎ                 โ”‚
โ”‚  โ€ข RBAC ๆƒ้™               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆŠ€ๆœฏๆ ˆ

ๅŽ็ซฏ

  • ่ฏญ่จ€: Go 1.20+
  • ๆก†ๆžถ: Gin Web Framework
  • ORM: GORM
  • ๆ•ฐๆฎๅบ“: MySQL 5.7+
  • ็ผ“ๅญ˜: Redis 6.0+ (ๅฏ้€‰)
  • ่ฎค่ฏ: JWT
  • ๅฎžๆ—ถ้€šไฟก: Gorilla WebSocket
  • ๆ”ฏไป˜: ๅพฎไฟกๆ”ฏไป˜ใ€ๆ”ฏไป˜ๅฎ

ๅ‰็ซฏ

  • ๆก†ๆžถ: Vue 3
  • UI: Element Plus
  • HTTP: Axios
  • ็Šถๆ€: Pinia
  • ่ทฏ็”ฑ: Vue Router

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

mychat/
โ”œโ”€โ”€ api/                      # ็”จๆˆท็ซฏ API (็ซฏๅฃ 8080)
โ”‚   โ”œโ”€โ”€ handlers/              # ่ฏทๆฑ‚ๅค„็†
โ”‚   โ”œโ”€โ”€ models/               # ๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”œโ”€โ”€ cache/                # ็ผ“ๅญ˜ๅฑ‚
โ”‚   โ”œโ”€โ”€ database/             # ๆ•ฐๆฎๅบ“่ฟžๆŽฅ
โ”‚   โ”œโ”€โ”€ middleware/           # ไธญ้—ดไปถ
โ”‚   โ”œโ”€โ”€ utils/                # ๅทฅๅ…ท็ฑป
โ”‚   โ””โ”€โ”€ main.go               # ไธปๅ…ฅๅฃ
โ”œโ”€โ”€ admin/                    # ็ฎก็†ๅŽๅฐ
โ”‚   โ”œโ”€โ”€ backend/              # ็ฎก็†ๅŽๅฐ API (็ซฏๅฃ 8081)
โ”‚   โ”‚   โ”œโ”€โ”€ handlers/        # ่ฏทๆฑ‚ๅค„็†
โ”‚   โ”‚   โ”œโ”€โ”€ models/          # ๆ•ฐๆฎๆจกๅž‹
โ”‚   โ”‚   โ”œโ”€โ”€ cache/           # ็ผ“ๅญ˜ๅฑ‚
โ”‚   โ”‚   โ”œโ”€โ”€ database/        # ๆ•ฐๆฎๅบ“่ฟžๆŽฅ
โ”‚   โ”‚   โ”œโ”€โ”€ middleware/      # ไธญ้—ดไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ utils/           # ๅทฅๅ…ท็ฑป
โ”‚   โ”‚   โ”œโ”€โ”€ websocket/       # WebSocket Hub
โ”‚   โ”‚   โ””โ”€โ”€ main.go         # ไธปๅ…ฅๅฃ
โ”‚   โ””โ”€โ”€ frontend/            # ็ฎก็†ๅŽๅฐๅ‰็ซฏ (็ซฏๅฃ 3000)
โ”‚       โ””โ”€โ”€ src/             # Vue ๆบ็ 
โ”œโ”€โ”€ websocket/                # WebSocket ๆœๅŠก (็ซฏๅฃ 8082)
โ”‚   โ”œโ”€โ”€ hub.go              # WebSocket Hub
โ”‚   โ”œโ”€โ”€ manager.go          # ่ฟžๆŽฅ็ฎก็†
โ”‚   โ”œโ”€โ”€ message.go          # ๆถˆๆฏๅค„็†
โ”‚   โ””โ”€โ”€ stats.go            # ็ปŸ่ฎกไฟกๆฏ
โ”œโ”€โ”€ docs/                    # ้กน็›ฎๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ README.md           # ๆ–‡ๆกฃ็ดขๅผ•
โ”‚   โ”œโ”€โ”€ SERVICE_SEPARATION.md  # ๆœๅŠกๅˆ†็ฆป่ฏดๆ˜Ž
โ”‚   โ”œโ”€โ”€ API.md              # API ๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ DATABASE.md          # ๆ•ฐๆฎๅบ“ๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ PROJECT_STATUS.md    # ้กน็›ฎ็Šถๆ€
โ”‚   โ””โ”€โ”€ IMPROVEMENT_PLAN.md # ๅฎŒๅ–„่ฎกๅˆ’
โ”œโ”€โ”€ uploads/                 # ๆ–‡ไปถไธŠไผ ็›ฎๅฝ•
โ”œโ”€โ”€ start-all.bat            # ไธ€้”ฎๅฏๅŠจๆ‰€ๆœ‰ๆœๅŠก
โ”œโ”€โ”€ stop-all.bat             # ไธ€้”ฎๅœๆญขๆ‰€ๆœ‰ๆœๅŠก
โ””โ”€โ”€ .gitignore              # Git ๅฟฝ็•ฅ้…็ฝฎ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

  • Go 1.20+
  • Node.js 16+
  • MySQL 5.7+
  • Redis 6.0+ (ๅฏ้€‰)

1. ๅ…‹้š†้กน็›ฎ

git clone <repository-url>
cd mychat

2. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“

# ๅˆ›ๅปบๆ•ฐๆฎๅบ“
mysql -u root -p -e "CREATE DATABASE mychat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# ๅฏผๅ…ฅๅˆๅง‹ๆ•ฐๆฎ
mysql -u root -p mychat < api/init_data.sql

3. ๅฏๅŠจๆœๅŠก

ๆ–นๅผไธ€๏ผšไฝฟ็”จๅฏๅŠจ่„šๆœฌ๏ผˆๆŽจ่๏ผ‰

# Windows
start-all.bat

# Linux/Mac
bash start-all.sh

ๆ–นๅผไบŒ๏ผšๅ•็‹ฌๅฏๅŠจ

# ็”จๆˆท็ซฏ API (8080)
cd api
go mod tidy
go run main.go

# ็ฎก็†ๅŽๅฐ API (8081)
cd admin/backend
go mod tidy
go run main.go

# WebSocket ๆœๅŠก (8082)
cd websocket
go mod tidy
go run main.go

# ็ฎก็†ๅŽๅฐๅ‰็ซฏ (3000)
cd admin/frontend
npm install
npm run dev

4. ่ฎฟ้—ฎ็ณป็ปŸ

็”จๆˆท็ซฏ API

็ฎก็†ๅŽๅฐ

WebSocket

  • ่ฟžๆŽฅๅœฐๅ€: ws://localhost:8082/ws

๐Ÿ” ้ป˜่ฎค่ดฆๆˆท

็ฎก็†ๅ‘˜

  • ็”จๆˆทๅ: admin
  • ๅฏ†็ : 123456

ๆต‹่ฏ•็”จๆˆท

  • ็”จๆˆทๅ: testuser
  • ๅฏ†็ : 123456

๐Ÿ“š ๆ–‡ๆกฃ

่ฏฆ็ป†ๆ–‡ๆกฃ่ฏทๆŸฅ็œ‹ docs/ ็›ฎๅฝ•๏ผš

๐Ÿ› ๏ธ ๅผ€ๅ‘ๆŒ‡ๅ—

ๆทปๅŠ ๆ–ฐ็š„ API ๆŽฅๅฃ

็”จๆˆท็ซฏ API (api/)

  1. ๅœจ api/handlers/ ๅˆ›ๅปบๅค„็†ๅ‡ฝๆ•ฐ
  2. ๅœจ api/main.go ๆณจๅ†Œ่ทฏ็”ฑ
  3. ๆ›ดๆ–ฐ Swagger ๆณจ้‡Š
  4. ่ฟ่กŒ swag init ็”Ÿๆˆๆ–‡ๆกฃ

็ฎก็†ๅŽๅฐ API (admin/backend/)

  1. ๅœจ admin/backend/handlers/ ๅˆ›ๅปบๅค„็†ๅ‡ฝๆ•ฐ
  2. ๅœจ admin/backend/main.go ๆณจๅ†Œ่ทฏ็”ฑ

ๆทปๅŠ ๆ–ฐ็š„ๆ•ฐๆฎ่กจ

  1. ๅœจ MySQL ไธญๅˆ›ๅปบ่กจ
  2. ๅœจๅฏนๅบ” models/ ็›ฎๅฝ•ๅˆ›ๅปบๆจกๅž‹ๆ–‡ไปถ
  3. ๅœจ database/db.go ไธญๆทปๅŠ  AutoMigrate

๐Ÿ› ๅธธ่ง้—ฎ้ข˜

1. ๆœๅŠกๅฏๅŠจๅคฑ่ดฅ

  • ๆฃ€ๆŸฅ็ซฏๅฃๆ˜ฏๅฆ่ขซๅ ็”จ
  • ็กฎ่ฎคๆ•ฐๆฎๅบ“่ฟžๆŽฅ้…็ฝฎๆญฃ็กฎ
  • ็กฎ่ฎค Redis ๆ˜ฏๅฆๅฏๅŠจ๏ผˆๅฏ้€‰๏ผ‰
  • ่ฟ่กŒ go mod tidy ๅฎ‰่ฃ…ไพ่ต–

2. ๆ•ฐๆฎๅบ“่ฟžๆŽฅๅคฑ่ดฅ

  • ๆฃ€ๆŸฅ MySQL ๆ˜ฏๅฆๅฏๅŠจ
  • ็กฎ่ฎคๆ•ฐๆฎๅบ“้…็ฝฎๅœจ database/db.go
  • ็กฎ่ฎค็”จๆˆทๅๅฏ†็ ๆญฃ็กฎ
  • ็กฎ่ฎคๆ•ฐๆฎๅบ“ๅทฒๅˆ›ๅปบ

3. ๅ‰็ซฏๆ— ๆณ•่ฟžๆŽฅ API

  • ๆฃ€ๆŸฅ่ทจๅŸŸ้…็ฝฎ (CORS)
  • ็กฎ่ฎค API ๆœๅŠกๅทฒๅฏๅŠจ
  • ๆฃ€ๆŸฅ้˜ฒ็ซๅข™่ฎพ็ฝฎ

4. WebSocket ่ฟžๆŽฅๅคฑ่ดฅ

  • ็กฎ่ฎค WebSocket ๆœๅŠกๅทฒๅฏๅŠจ (8082)
  • ๆฃ€ๆŸฅ WebSocket URL ๆ˜ฏๅฆๆญฃ็กฎ
  • ็กฎ่ฎค็ฝ‘็ปœ่ฟžๆŽฅๆญฃๅธธ

๐Ÿ“Š ้กน็›ฎ่ฟ›ๅบฆ

ๆจกๅ— ๅฎŒๆˆๅบฆ ็Šถๆ€
็ฎก็†ๅŽๅฐ API 95% โœ… ่ฟ่กŒๆญฃๅธธ
็ฎก็†ๅŽๅฐๅ‰็ซฏ 90% โœ… ๅฏ็”จ
็”จๆˆท็ซฏ API 70% โš ๏ธ ้œ€ไฟฎๅค
WebSocket ๆœๅŠก 60% โš ๏ธ ้œ€ไฟฎๅค
ๆ•ฐๆฎๅบ“่ฎพ่ฎก 95% โœ… ๅฎŒๆˆ
ๆ–‡ๆกฃ 90% โœ… ๅฎŒๅ–„

ๆ•ดไฝ“ๅฎŒๆˆๅบฆ: ~82%

๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ

ๆไบค่ง„่Œƒ

feat: ๆ–ฐๅŠŸ่ƒฝ
fix: ไฟฎๅค bug
docs: ๆ–‡ๆกฃๆ›ดๆ–ฐ
style: ไปฃ็ ๆ ผๅผ่ฐƒๆ•ด
refactor: ้‡ๆž„
test: ๆต‹่ฏ•็›ธๅ…ณ
chore: ๆž„ๅปบ/ๅทฅๅ…ท็›ธๅ…ณ

๐Ÿ“„ License

MIT License


้กน็›ฎๅˆ›ๅปบ: 2026-01-28 ๆœ€ๅŽๆ›ดๆ–ฐ: 2026-01-28 ็‰ˆๆœฌ: v1.0.0

About

mychat builded with go

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages