{"id":28155015,"url":"https://github.com/xdnloveme/easychat","last_synced_at":"2026-05-02T11:34:13.562Z","repository":{"id":42098923,"uuid":"226800408","full_name":"xdnloveme/easychat","owner":"xdnloveme","description":"简聊(easychat)✨✨，服务端代码，与easychat-web搭配食用，基于node的koa2框架","archived":false,"fork":false,"pushed_at":"2022-12-22T13:24:32.000Z","size":117,"stargazers_count":3,"open_issues_count":13,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-06T08:39:32.198Z","etag":null,"topics":["easychat","koa2","nodejs","nodejs-server","redis"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xdnloveme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-09T06:26:49.000Z","updated_at":"2020-07-20T08:13:49.000Z","dependencies_parsed_at":"2023-01-30T10:00:17.100Z","dependency_job_id":null,"html_url":"https://github.com/xdnloveme/easychat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdnloveme%2Feasychat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdnloveme%2Feasychat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdnloveme%2Feasychat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdnloveme%2Feasychat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xdnloveme","download_url":"https://codeload.github.com/xdnloveme/easychat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254289311,"owners_count":22046070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["easychat","koa2","nodejs","nodejs-server","redis"],"created_at":"2025-05-15T06:34:12.150Z","updated_at":"2026-05-02T11:34:13.520Z","avatar_url":"https://github.com/xdnloveme.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easychat\n简聊(easychat)✨✨，服务端代码，与easychat-web搭配食用，基于node的koa2框架\n\n# 开始\n\n## 安装\n\n\u003e ⚠️ 警告：在安装前请确保MAC环境下已经安装Mysql 5.7以上，同时已经安装redis并启动服务redis-server，导入sql结构至数据库\n\n全局安装nodemon\n\n```bash\nnpm install -g nodemon\n```\n\n安装依赖\n\n```bash\nnpm install\n```\n\n运行在开发环境下\n\n```bash\nnpm run dev\n```\n\n# 文档\n\n#### 项目结构\n\n```javascript\n.\n├── README.md\n├── bin\n│   └── www\n├── config\n│   ├── dbConfig.js // 数据库配置\n│   ├── env.js // 一些环境变量\n│   ├── index.js // 配置入口\n│   ├── orm.js // orm模块配置\n│   ├── redisConfig.js // redis服务配置\n│   └── socketIo.js // socket配置\n├── easychat.sql // 导入至数据库的sql模型\n├── package-lock.json \n├── package.json\n├── public\n├── server\n│   ├── server.js // 主线程服务器\n│   └── socket_server.js // socket 服务器\n├── src\n│   ├── app.js // 项目入口\n│   ├── controller // controller 层\n│   │   ├── avatar.js\n│   │   └── user\n│   ├── middlewares // 各类中间件\n│   │   ├── Authorization.js // JWT控制接口权限\n│   │   ├── AuthorizationSocket.js // JWT控制socket权限\n│   │   ├── CrossDomain.js // 跨域（有可能的话）\n│   │   └── UnifiedErrorHandle.js // 统一错误处理\n│   ├── model // 数据模型层\n│   │   ├── friendRequestMap // 所有文件都一致，分别是结构，模型和index（好友请求model）\n│   │   │   ├── FriendRequestMapModel.js\n│   │   │   ├── index.js\n│   │   │   └── structure.js\n│   │   ├── index.js\n│   │   ├── user // 用户表\n│   │   ├── userBlackListMap // 用户黑名单表\n│   │   ├── userChatRecord // 用户最后一次聊天的记录（单次记录）\n│   │   ├── userFriendsMap // 用户好友映射表\n│   │   └── userIdPool // 用户简聊号池\n│   ├── orm // orm数据映射交互层\n│   │   ├── FriendRequest.js\n│   │   ├── User.js\n│   │   ├── UserBlackListMap.js\n│   │   ├── UserChatRecord.js\n│   │   └── UserFriendsMap.js\n│   ├── router // api路由地址控制\n│   │   ├── avatar\n│   │   │   └── index.js\n│   │   ├── index.js\n│   │   └── user\n│   │       ├── index.js\n│   │       ├── login.js\n│   │       ├── public.js\n│   │       └── user.js\n│   ├── service // service层，用于碎片化业务逻辑分发\n│   │   ├── common.js\n│   │   └── user\n│   │       ├── login.js\n│   │       ├── register.js\n│   │       └── user.js\n│   ├── socket // socket事件\n│   │   ├── chat\n│   │   │   ├── events.js\n│   │   │   ├── index.js\n│   │   │   ├── modules\n│   │   │   │   ├── chat.js\n│   │   │   │   └── square.js\n│   │   │   └── namespace.js\n│   │   └── index.js\n│   ├── utils // 工具类\n│   │   ├── common.js // 通用工具\n│   │   ├── errorHandle // 统一错误处理\n│   │   │   ├── code.js // 部分错误码映射关系（权限）\n│   │   │   ├── index.js \n│   │   │   └── message.js // 自定义错误码以及信息\n│   │   ├── global // 全局变量\n│   │   │   ├── debug.js\n│   │   │   ├── error_handler.js\n│   │   │   └── index.js\n│   │   ├── mail // 邮件发送器\n│   │   │   ├── config.js\n│   │   │   ├── mail.js\n│   │   │   └── template.js\n│   │   ├── responseContent.js // 接口返回内容结构包\n│   │   ├── sign // 权限签名工具方法\n│   │   │   ├── expiresTime.js\n│   │   │   └── token.js\n│   │   └── validation.js // 参数验证方法\n│   └── views // 部分可视化页面（比如激活成功页面）\n│       └── index.ejs\n```\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdnloveme%2Feasychat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdnloveme%2Feasychat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdnloveme%2Feasychat/lists"}