{"repo":"hezhongfeng/im-server","free":true,"listed":false,"github":"https://github.com/hezhongfeng/im-server","clone":"git clone https://github.com/hezhongfeng/im-server.git","description":"IM application, including server, admin and client.即时通讯应用服务，包含服务端、管理端和客户端","language":"JavaScript","stars":70,"topics":["im","socket-io","websocket","egg","koa2","mysql","sequelize","instant-messaging","chat"],"license":"MIT","category":"databases-storage","readme_excerpt":"即时通讯应用, 包含服务端、管理端和客户端 现已部署上线，欢迎体验客户端和管理端 请不要随意更改默认角色和权限，请有点爱心，别整一些很不文明的名字 介绍 使用 egg 框架，IM 服务的服务端 功能简介 1. 注册，登录，个人、群组聊天，个人信息编辑等基础功能 2. 申请添加好友和申请入群 3. 表情，图片，视频，定位信息支持 4. 聊天会话列表记录 5. 消息记录（微信的消息记录真实一言难尽） 6. 支持多点同时登录 7. 百度 UNIT 机器人自动聊天 8. 支持 github 一键登录 9. 管理端，进行角色和权限的管理，群状态管理（我也当一回马化腾） 需求简介 移动互联网发展至今，以微信为首的即时通讯服务已经融入了我们生活中的各个角落，在公司的一些业务中也扮演着重要的角色，对于即时通讯我们公司原来是使用的环信的服务，但是有很多定制化的需求无法实现，所以后来决定内部开发一个满足定制化需求的即时通讯微服务。 使用 socket.io 框架是因为当时后端缺人，加上看了一些例子后觉得使用起来真的很方便，而且全平台支持，所以这个微服务就在前端团队进行落地实践，目前效果还不错。 社区目前这方面的内容比较少或者太简陋（只有一个公共的聊天室这种）。另外就是在业务开发过程中被 PM 搞得很难受，所以想脱离一些特有的业务上的东西，实现一个功能简单五脏俱全的不掺杂公司业务的 IM 应用,包含服务端，管理端和客户端。客户端的模仿对象是微信，因为我很熟悉，不用在产品上面思考太多，另外就是试用的人很熟悉，不需要太多的沟通成本。 框架简介 要开发一套完整的即时通讯服务，需要以下部分： 1. 服务端：用来实现基础的服务接口和数据持久化 2. 客户端：完成登录、聊天等基础功能，类似微信 3. 管理端：管理群组、用户和角色权限 server 为企业级框架和应用而生 选用阿里的 egg.js 框架做支撑，看中的原因是他们内部大规模的落地和安全方面做得比较好，没有选择 nest 的原因是集成 socket.io 比较麻烦，ORM 选用 sequelize，数据库是 mysql ,之前一起使用过，上手难度小 admin 开箱即用的中台前端/设计解决方案 选择 Ant Design Pro 作为模板开发管理端，选用的原因是我对 Vue 全家桶比较熟悉，想借着这个机会熟悉下整套 React 生态 的开发流程，感受下目前国内两大开发框架的本质区别和殊途同归，Ant Design Pro 已经发布了好几年了，也的确给中小型企业带来效率的提升，也正好适合我这的需求。 client 🛠️ Vue.js 开发的标准工具 使用 @vue/cli 搭建 IM 服务的客户端，一个移动端的 H5 项目，UI 框架使用的有赞 vant，集成了我的开源组件vue-page-stack和黄老师的better-scroll，实现 IM 的基础功能 实体关系 作为一个前端工程师，大多数的日常工作是不需要思考实体关系的。但是，就我的实际体验来看，懂得实体关系可以帮助我们更好的理解业务模型。而对产品和业务理解的提升对我们的帮助是非常大的，可以在需求评审的时候发现很多不符合逻辑的地方（怎么又要吐槽产品经理了），这时候能提出来就会主动避免我们在后续的过程中进行反复开发，同时可以和产品侧的同学形成比较良好的互动（而不是互怼）。下面简单罗列下比较重要的实体关系： 通过上图可以看到 user 是整个关系图中的核心，下面介绍下各个实体之间的关系： 1. user 和 user info(用户信息) 是一对一的关系 2. us","default_branch":null,"files":null,"tree":[],"storefront":"/r/hezhongfeng","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/hezhongfeng/im-server/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}