# im_node **Repository Path**: southwind957/im_node ## Basic Information - **Project Name**: im_node - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-02 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IM Node Server 一个基于 Node.js 和 TypeScript 开发的即时通讯(IM) WebSocket 服务器,支持实时聊天、用户认证和离线消息存储功能。 ## 🌟 功能特性 - **实时通讯**: 基于 WebSocket 的全双工通信 - **用户认证**: 支持用户身份验证和会话管理 - **单聊功能**: 支持一对一的即时消息传输 - **离线消息**: 自动存储和转发离线消息 - **数据持久化**: 使用 MySQL 数据库进行数据存储 - **TypeScript**: 完整的类型支持,提高代码质量 - **连接管理**: 智能的客户端连接和断开处理 ## 🏗️ 技术栈 - **运行时**: Node.js - **编程语言**: TypeScript - **WebSocket 库**: `ws` - **数据库**: MySQL + TypeORM - **日期处理**: Day.js - **环境配置**: dotenv - **代码质量**: ESLint + Prettier - **包管理**: pnpm ## 📦 项目结构 ``` src/ ├── config/ # 配置文件 │ └── index.ts # 环境变量配置 ├── db/ # 数据库相关 │ └── index.ts # TypeORM 数据源配置 ├── entities/ # 数据库实体 │ └── users.entity.ts # 用户实体定义 ├── services/ # 业务逻辑层 │ ├── auth.ts # 用户认证服务 │ ├── message.ts # 消息处理服务 │ └── user.ts # 用户服务 ├── types/ # 类型定义 │ ├── imType/ # IM 相关类型 │ │ └── core.d.ts # 核心类型定义 │ └── index.d.ts # 类型导出 ├── utils/ # 工具函数 ├── wsService/ # WebSocket 服务 │ ├── handlers.ts # 消息处理器 │ └── index.ts # WebSocket 服务器主类 └── server.ts # 应用入口文件 ``` ## 🚀 快速开始 ### 环境要求 - Node.js (推荐 v16+) - MySQL 数据库 - pnpm 包管理器 ### 安装依赖 ```bash pnpm install ``` ### 环境配置 复制 `.env.example` 到 `.env` 并配置相关参数: ```env PORT=8080 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASS=your_password DB_NAME=im_server ``` ### 数据库设置 确保 MySQL 数据库已运行,并创建相应的数据库: ```sql CREATE DATABASE IF NOT EXISTS im_server; ``` ### 启动服务 开发模式: ```bash pnpm dev ``` 生产模式: ```bash pnpm start ``` ## 📡 API 说明 ### WebSocket 连接 连接到 WebSocket 服务器: ```javascript const ws = new WebSocket('ws://localhost:8080'); ``` ### 消息格式 所有消息遵循 `ImResult` 接口格式: ```typescript interface ImResult { type: "chat" | "group" | "auth" | "system" from?: string // 发送方ID to?: string // 接收方ID userId: string // 用户ID content?: any // 消息内容 timestamp?: number // 时间戳 } ``` ### 认证流程 1. **发送认证消息**: ```json { "type": "auth", "userId": "user123", "content": "auth_token" } ``` 2. **认证响应**: ```json { "type": "auth", "userId": "user123", "content": "authentication successful", "timestamp": 1640995200 } ``` ### 发送聊天消息 ```json { "type": "chat", "from": "user123", "to": "user456", "userId": "user123", "content": "Hello, World!", "timestamp": 1640995200 } ``` ## 🔧 配置选项 | 环境变量 | 说明 | 默认值 | |---------|------|--------| | PORT | WebSocket 服务端口 | 8080 | | DB_HOST | MySQL 主机地址 | localhost | | DB_PORT | MySQL 端口 | 3306 | | DB_USER | MySQL 用户名 | root | | DB_PASS | MySQL 密码 | 123456 | | DB_NAME | 数据库名称 | im_server | ## 📝 可用脚本 - `pnpm dev` - 开发模式运行(支持热重载) - `pnpm start` - 生产模式运行 - `pnpm lint` - 运行 ESLint 代码检查 - `pnpm format` - 运行 Prettier 代码格式化 ## 🔒 安全特性 - 用户身份认证机制 - WebSocket 连接验证 - 输入数据验证 - 安全的密码存储(待实现) ## 🚧 待完善功能 - [ ] 群组聊天功能 - [ ] 消息已读回执 - [ ] 文件传输支持 - [ ] 消息历史记录查询 - [ ] 用户在线状态显示 - [ ] JWT 令牌认证 - [ ] 消息加密传输 - [ ] 用户注册功能 - [ ] 好友关系管理 ## 🤝 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📝 许可证 此项目基于 ISC 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 👥 作者 - 项目开发者 ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和开源社区。 --- 如有问题或建议,欢迎提交 Issue 或 Pull Request。