即时通讯系统

经验总结

这学期做了一次即使通讯聊天系统,后端完全靠自己设想,用了最原生态的Java环境实现的,真的是收益匪浅,那么接下来,我就简单的分享一波吧。


  先从信息对接开始说一说吧。起初前后端信息对接利用的只是简单的把每种信息按照固定格式去编码转二级制然后传输,例如1#IP#user#pvd#time,表示向服务端发送登陆消息的请求。这种信息传输设计也是最容易想到的,但是服务端那边要解析,打包,反馈等操作就比较乱了,不太符合对象化的思维。再后来优化系统的时候我们找到了对象流传输的方法,就是把信息定义成一个实现了serializable接口的类,这样定义好的类可以打包成字节流,然后传输出去。因为类的属性很好存取,再里面再加上一个枚举类型的type属性,就可以很方便的判断信息类型,然后再根据信息类型去取出对应的属性。在之后写解析类的时候省了相当多的麻烦,特别方便。


  再说我设计的数据库表吧,数据库的表总分六种类型,其中有两种是总表,有userIformation(总用户信息表)和onlineUsers(在线用户表)。还有三种是用户个人的表,有listID(用户好友列表)、verifyID(用户个人信息验证表)和fileID(用户文件记录表)。最后一种是C(ID1)C(ID2),是ID1和ID2两个用户之间的聊天记录表。这几个表基本涵盖了聊天所有的基本信息。设计onlineUser表的想法是可以对在线好友更好的访问,实时监控到在线好友状况。
  最后是服务端的解析类,服务端最核心地方一个是信息接受线程,一个是信息对象发送类,还有一个就是信息解析类。解析类里面设计了很多与客户端信息对接的方法,每一种存在的访问信息种类都会单独写一个方法放在解析类里面,方法里面对信息解析过程一般都会对数据库操作一遍,然后视情况反馈给客户端对应的信息对象。


  通过这次的项目实践,我遇到了许多问题,很多都是致命题,比如后端给前端设计信息对接格式,前后端迟迟对接不起来,总之就是项目不能够按照既定的流程走,这真是硬伤,以后再做项目一定要有一个说话有权威,并且认真负责的人做队长,经常汇报项目进度等等。要好好规划才行,不过最后的结果还好,项目拿了A+,还是要感谢我的队友们,没有大家共同努力是不可能的有这个结果的,谢谢。

你可能感兴趣的:(即时通讯系统)