# go-im **Repository Path**: phpmylove/go-im ## Basic Information - **Project Name**: go-im - **Description**: go语言开发的im聊天系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-20 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IM Chat - 即时通讯系统 基于 WebSocket 的即时通讯系统,支持私聊、群聊、好友管理和图片发送。 ## 技术栈 ### 后端 | 技术 | 版本 | 说明 | |------|------|------| | Go | 1.25.5 | 编程语言 | | gorilla/mux | v1.8.1 | HTTP 路由 | | gorilla/websocket | v1.5.3 | WebSocket 通信 | | golang-jwt/jwt/v5 | v5.2.1 | JWT 认证 | | lib/pq | v1.10.9 | PostgreSQL 驱动 | | golang.org/x/crypto | v0.28.0 | 密码加密 | ### 前端 | 技术 | 版本 | 说明 | |------|------|------| | Vue | 3.4+ | UI 框架 | | Vue Router | 4.3+ | 前端路由 | | Pinia | 2.1+ | 状态管理 | | Axios | 1.7+ | HTTP 请求 | | Vite | 5.4+ | 构建工具 | ### 数据库 | 技术 | 版本 | |------|------| | PostgreSQL | 14+ | ## 功能说明 - **用户系统**:注册、登录、JWT 认证 - **私聊**:一对一实时聊天,WebSocket 推送 - **群聊**:创建群组、邀请成员、群内聊天 - **好友管理**:搜索用户、添加好友、好友请求处理 - **消息类型**:文本消息、图片消息 - **头像上传**:支持自定义头像和图片消息 - **未读计数**:会话未读消息数提醒 - **响应式布局**:桌面端和手机端均可使用 ## 项目结构 ``` ├── server.go # 后端入口 ├── go.mod / go.sum # Go 依赖管理 ├── internal/ │ ├── config/ # 配置管理(环境变量) │ ├── model/ # 数据模型 │ ├── repository/ # 数据库操作 │ ├── service/ # 业务逻辑 │ ├── handler/ # HTTP 接口 │ ├── middleware/ # 中间件(认证、CORS) │ ├── websocket/ # WebSocket 通信 │ └── upload/ # 文件上传 ├── frontend/ │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 公共组件 │ │ ├── api/ # API 调用 │ │ ├── store/ # Pinia 状态 │ │ ├── router/ # 路由配置 │ │ └── utils/ # 工具函数 │ ├── index.html │ └── vite.config.js # Vite 配置 └── uploads/ # 上传文件目录 ``` ## 系统截图 ![image](./images/1.jpg) ![image](./images/2.jpg) ![image](./images/3.jpg) ![image](./images/4.jpg) ![image](./images/4.jpg) ![image](./images/5.jpg) ![image](./images/6.jpg) ![image](./images/7.jpg) ![image](./images/8.jpg) ## 快速开始 ### 1. 环境要求 - Go 1.21+ - Node.js 18+ - PostgreSQL 14+ ### 2. 创建数据库 ```sql CREATE DATABASE im_chat; ``` ### 3. 启动后端 ```bash # 设置环境变量 export DB_HOST=127.0.0.1 export DB_PORT=5432 export DB_USER=postgres export DB_PASSWORD=root export DB_NAME=im_chat # Windows PowerShell $env:DB_HOST="127.0.0.1" $env:DB_PORT="5432" $env:DB_USER="postgres" $env:DB_PASSWORD="root" $env:DB_NAME="im_chat" # 启动服务(默认端口 8089) go run server.go ``` 数据库表结构会在首次启动时自动创建,无需手动建表。 ### 4. 启动前端 ```bash cd frontend # 安装依赖 npm install # 启动开发服务器(默认端口 3000) npm run dev ``` ### 5. 访问系统 打开浏览器访问 `http://localhost:3000` ## 环境变量配置 | 变量 | 默认值 | 说明 | |------|--------|------| | DB_HOST | 127.0.0.1 | 数据库地址 | | DB_PORT | 5432 | 数据库端口 | | DB_USER | postgres | 数据库用户 | | DB_PASSWORD | root | 数据库密码 | | DB_NAME | im_chat | 数据库名称 | | DB_SSLMODE | disable | SSL 模式 | | JWT_SECRET | im-chat-secret-key-2024 | JWT 密钥 | | SERVER_PORT | 8089 | 服务端口 | | UPLOAD_DIR | ./uploads | 上传目录 | ## API 接口 ### 认证 - `POST /api/auth/register` - 注册 - `POST /api/auth/login` - 登录 ### 用户 - `GET /api/user/profile` - 获取个人信息 - `PUT /api/user/profile` - 更新个人信息 - `PUT /api/user/avatar` - 更新头像 - `PUT /api/user/password` - 修改密码 - `GET /api/user/search` - 搜索用户 ### 好友 - `GET /api/friends` - 好友列表 - `POST /api/friend/request` - 发送好友请求 - `GET /api/friend/requests` - 好友请求列表 - `PUT /api/friend/request/{id}/accept` - 接受请求 - `PUT /api/friend/request/{id}/reject` - 拒绝请求 ### 群组 - `POST /api/groups` - 创建群组 - `GET /api/groups` - 群组列表 - `GET /api/groups/{id}` - 群组详情 - `PUT /api/groups/{id}` - 更新群组 - `DELETE /api/groups/{id}` - 删除群组 - `GET /api/groups/{id}/members` - 群成员列表 - `POST /api/groups/{id}/invite` - 邀请成员 ### 会话与消息 - `POST /api/conversations/private` - 创建私聊会话 - `GET /api/conversations` - 会话列表 - `GET /api/conversations/{id}/messages` - 消息历史 ### WebSocket - `GET /ws?token={jwt}` - WebSocket 连接 ### 上传 - `POST /api/upload/image` - 上传图片 - `POST /api/upload/file` - 上传文件 ## WebSocket 消息格式 ### 发送消息 ```json { "type": "message", "data": { "conversation_id": 1, "msg_type": 0, "content": "你好" } } ``` ### 接收消息 ```json { "type": "new_message", "data": { "id": 1, "conversation_id": 1, "sender_id": 2, "sender_name": "张三", "sender_avatar": "", "msg_type": 0, "content": "你好", "created_at": "2026-05-20T10:00:00Z" } } ```