A Simple WeChat-like Instant Messaging Platform

WeChat-like multi-person Instant Messaging Platform.

作为练习项目,打算开发一个类似于微信的即时通讯平台,项目名称就叫 FlashChat,做这个小型的练习项目的目的是想更好的学习网络相关的知识,IM 系统中网络通信是基础,而且对网络通信的要求是非常高的,当然,肯定是从最简单的原型入手,期望能够一步步实现一个支持10万+用户同时在线的即时通讯的平台。

技术选型的初步计划

  1. 先使用 Java NIO 技术来实现一个原型版的 IM 系统,主要是熟悉和运用 Java 的 NIO 相关技术

  2. 然后将这个原型使用 Netty 进行改造,作为后面功能迭代的基础,因为 Netty 确实是一个非常高性能的网络通信基础框架,尽量少造轮子,之所以先使用 Java NIO 开发一个原型版本,就是想知道这个轮子该怎么造,这个过程中需要注意什么问题,有什么坑在里边

MVP 1 版本的需求

IM 系统中存在很多个客户端,客户端连接到服务端,发送消息给服务端,然后服务端转发消息给指定的客户端,所以一个最基本的收发消息的功能是必须的;

要发消息就需要有多个用户,所以方便的创建用户是必须的;发送消息也要有发送对象,所以简单的加好友的功能也是必须的,但是暂时可以不需要,我们可以先实现给任意的人发消息,不管它是不是好友

总结如下:

  1. 用户在第一次启动时,需要进行简单的注册(手机号+昵称),然后分配得到一个 userId,接下来就可以进行聊天了

  2. 用户登录成功,选择一个好友,可以发送消息给对方,对方可以正常收到消息

  3. 在某个客户端收到消息后,可以回复消息给对方

  4. 要特别注意消息的顺序

  5. 用户可以根据手机号搜索某个好友,读取到基本信息

  6. 用户可以添加某个用户为好友,直接加,可以先不通过验证机制

  7. 用户可以拉取自己的好友列表

所以 v1 版本只实现:1. 支持用户简单的注册和登录;2. 支持多个客户端连接到服务端;3. 支持某个客户端的用户发送消息给其他的客户端,其他客户端能收到并回复消息

IM 参考设计

最后更新于