zoukankan      html  css  js  c++  java
  • 基于Netty的聊天系统(二)协议定制----登录篇

    上一篇文章我们讨论了聊天的基本流程,那么我们现在基于上一篇文章的流程开始定义协议,如果有朋友有更好的建议,可以在下边回复一起学习讨论,我们说登录分为两部分,第一部分为和服务器的连接阶段,第二部分为验证阶段,那么首先我们基于这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成功,所有的成功都可以用该协议,那么这就是我们的登录阶段的协议制定,关于聊天的协议我们休息一会,在下一篇在详细介绍,欢迎大家来讨论

  • 相关阅读:
    Bootstrap学习js插件篇之提示框
    动态装载外部JavaScript脚本文件
    Bootstrap学习js插件篇之滚动监听
    ASP.NET 仿腾讯微博提示“还能输入*个字符”的实现
    Javascript 操作 Sql中的Xml 字段
    Bootstrap学习js插件篇之标签页
    CSS垂直水平完全居中手册
    Bootstrap学习js插件篇之下拉菜单
    国庆大礼包:2014年最全的ANDROID GUI模板和线框图免费下载
    网上收集:跟着 8 张思维导图学习 Javascript【转】
  • 原文地址:https://www.cnblogs.com/venny/p/3791740.html
Copyright © 2011-2022 走看看