码迷,mamicode.com
首页 > Web开发 > 详细

基于Netty的聊天系统(二)协议定制----登录篇

时间:2014-06-17 13:20:25      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:android   style   code   color   strong   数据   

上一篇文章我们讨论了聊天的基本流程,那么我们现在基于上一篇文章的流程开始定义协议,如果有朋友有更好的建议,可以在下边回复一起学习讨论,我们说登录分为两部分,第一部分为和服务器的连接阶段,第二部分为验证阶段,那么首先我们基于这2个部分来指定协议:

连接阶段:

{"id":"xxxx","#":"conn","u":1000@android/ios,"v":100}

id:客户端生成的id

#:表示行为,通俗意义是那个说,我们要做什么操作,该属性主要是对应服务器上的Handler

u:这里表示用户信息的意思,其实后边这个字符串代表2个含义,@之前是用户id,@之后是用户的手机版本,我们要获取用户的手机版本,分开写也可以,但是在这里感觉没必要分开就直接何在一起了

v:用户当前该软件的版本号,主要是为了检查用户手机上当前版本用的

用户讲上述json发送到服务器,那么服务器要响应客户端,所以这里我们还要定义服务器端给客户端返回的协议格式

响应连接阶段:

{"id":"xxxx","#":"conn","ssl":"[1]","rar":"[1,2]","ips":"[]"}

id:没什么好说的,服务器端生成的id

#:对应的Handler,通俗说即使表示响应的哪一个action,例如连接阶段用户发送act是conn的话,那么这里响应回来#也是conn,相对应

ssl:这里我们用了一个数组,其实前期用一个值也是没问题的,但是后期我们可能有还能多种加密方式,所以用数组

rar:这里也是一个数组,表示数据传输的压缩方式

ips:这里表示空闲服务器列表,便于用户选择一个压力小的服务器

好了,到这里为止我们完成了一个conn阶段,那么下一步就是验证阶段了,我们继续来讨论协议

auth阶段:

{"id":"xxxx","#":"auth","p":"1","ssl":2}

id:同样是客户端生成的id

#:表示行为,通俗意义是那个说,我们要做什么操作,该属性主要是对应服务器上的Handler

p:表示加密后的密码

ssl:表示用户选择的何种加密方式进行加密

那么在验证的时候可能会失败,那么服务器会返回错误信息,那么错误信息协议:

auth失败阶段:

{"id":"xxxx","#":"auth","ec":1,"em":"成功/失败"}

id:服务器生成id

#:对应的Handler,通俗说即使表示响应的哪一个action,例如连接阶段用户发送act是auth的话,那么这里响应回来#也是auth,相对应

ec:ErrorCode,错误码

em:ErrorMessage ,错误信息

auth成功阶段:

{"id":"xxxx","#":"auth"}

其实这里不仅仅可以用于auth成功,所有的成功都可以用该协议,那么这就是我们的登录阶段的协议制定,关于聊天的协议我们休息一会,在下一篇在详细介绍,欢迎大家来讨论

基于Netty的聊天系统(二)协议定制----登录篇,布布扣,bubuko.com

基于Netty的聊天系统(二)协议定制----登录篇

标签:android   style   code   color   strong   数据   

原文地址:http://www.cnblogs.com/venny/p/3791740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!