由于多年前开发了一款聊天软件,今天朋友给我打电话,说他们公司准备开发一款内部使用的沟通交流工具,找我咨询关于即时聊天软件一些经验,于是跟他聊了一些关于这方面的东西,所以在这里做个总结。
最简单的聊天系统
设计一个聊天系统首先想到的设计就是:
A发消息给B,B发消息给A,A,B能相互收到对方发送的消息。我们不考虑在同一个局域网或者UDP穿透等特殊情况的,A,B是网络上随意的两台设备,所以我们需要通过一台A,B能同时访问到的机器做中转,A发消息给B的过程是:A, B同时连接Core服务器, A把消息发送给Core服务器,Core服务器把消息转发给B,B发消息给A的过程是同理,一个简单的聊天系统就成型了。
可以用的方案
最简单的聊天系统成型,但是这仅仅是最简单的系统,仅仅是一对一聊天,谈不上可以用性,真正可用的系统我们必须解决如下问题:
- 保存必要的客户端信息,提供注册,登陆,获取自身用户信息,增加好友,获取好友信息等功能。
- 大量的用户同时在线相互发送消