之前因为工作需要所以有过IM的相关调研,不过感觉当时做的东西,太不满意了。所以现在准备重新做一遍,顺便记录下整个记录过程。
先描述一下环境。IM服务器C#语言编写,采用UDP协议,最大传输内容8K。消息的实现过程相对简单获取消息处理消息,如下图 然后我们在业务逻辑里边将消息再发送给另一个客户端,那么消息服务器的业务逻辑就算完成了。Ok,或许你觉得这个太简单了,完全不像是消息服务器的逻辑,但是,消息服务器的本质就是这样,接收到消息,然后转发。 但是消息多了之后,我们的业务逻辑中势必会进行各种各样的判断,用于确定消息分类型,然后区别对待,并且进行下一步处理。既然这样,为了方便,消息服务器中一般会引入一个概念,叫做消息路由主要是在获取到消息之后,判断消息类型,然后将不同类型的消息推送到具体的处理逻辑中去。到这一步,消息服务器图应该缓一缓了。如下图 其实这个时候,简单的框架已经搭建起来,我们已经做到不同消息的传达,比如说登陆,比如说发送消息,比如说获取自己的资料,都可以做的到。但是现在的消息机制是不完善的,并且过于依赖于网络,所以我们需要一种机制来记录,我们发送的消息。 消息的生命周期: 消息的生命周期,是在两个地方共同完成的,发送端发送消息,接收端接收消息,处理并发送回执,客户端接收回执,完成消息。 发送端周期,消息一旦被发送就开始了周期,在规定的时间内,接收到消息的回执则为消息被响应,否则为消息超时(消息超时后,则客户端不再响应该消息)。如下图 接收端周期,接收到消息之后,直至消息处理完成,则消息完成生命周期。 框架上应该已经没有什么东西可以阻挡我们前进了,剩下的基本上就是业务上的逻辑了。 登录、获取当前登录的人、转发消息。一个小型的IM系统已经做完。先上半成品效果图 此项目,会渐渐开源,未经允许不能商用,仅仅作为学习理解IM使用