写了个自己的通信协议 功能很简单 可能还不能称作协议 称为通信地基还好些 不过写个指导的东西还是很好的 有了目标就不会迷失了嘛 呵呵
基于xmpp的简单通信协议
能够实现的功能:用户登录 注册 上下线消息通知 一对一聊天 群聊 代码在实现中...
一.服务器和客户机之间消息发送格式:采用xmpp格式
1.从客户机发送服务器的消息
(1). 登录请求消息<msg><type>login</type><name>a</name><pwd>b</pwd></msg>
(2).注册请求消息<msg><type>regist</type><name>a</name><pwd>b</pwb></msg>
(3).与某个在线用户对话的消息 me代表发送人 chatmsg发送的消息 to接受人 <msg><type>chattoone</type><name>me</name><content>chatmsg</content><name>to</name></msg>
(4).与全部在线用户对话的消息 <msg><type>chattoall</type><name>me</name><content>chatmsg</content></msg>
(5).下线提示消息<msg><type>out</type><name>client</name></msg>
(6).用户对话窗口已打开消息<msg><type>windowopen</type><name>client</name></msg>
2.从服务器发给客户机的消息
(1).登录应答消息<msg><type>loginre</type><name>client</name><access>suc</access></msg>
(2).注册应答消息<msg><type>registre</type><name>client</name><access>suc</access></msg>
(3).转发消息<msg><type>otherclient</type><name>client</name><content>chatmsg</content></msg>
(4).在线用户列表消息<msg><type>clientlist<type><list>al</list></msg>
(5).用户上线消息<msg><type>loginon</type><name>client</name></msg>
(6).用户下线消息<msg><type>out</type><name>client</name></msg>
二.服务器和客户机之间通信的规则
1.用户登录过程:
用户向服务器发送登录请求消息 并堵塞在接受应答消息上 服务器验证用户信息并且发送登录应答消息 用户接受到消息 1.如果登录成功 服务器将这个用户添加到在线用户队列中 客户机则打开对话窗口 并且发送一条用户对话窗口已打开的消息给服务器 服务器收到这条消息后 将在线用户列表消息发送给客户端 客户端接收到信息后 将列表消息显示在显示框中 2. 如果登录失败 客户机显示消息提示框 将原有链接断开 新建一个链接 显示登录界面 重新执行登录
2.用户注册过程:
用户向服务器发送注册请求信息 服务器接收到后查看用户名是否重复 如果重复 服务器发送一条注册失败消息给用户 用户收到注册失败消息后 显示失败消息 如果注册成功 服务器发送一条成功消息给用户 并且在合法用户队列中添加新注册的用户 用户收到成功的消息 后打开登录界面 执行登录
3.用户上线提示:
用户登录成功后 服务器将新用户上线信息发给其他在线信息 并且更新其他用户的在线用户列表
4.用户下线提示:
用户发送下线消息给服务器 服务器将在线用户队列中的相关项去除 服务器给其他在线用户发送用户下线消息 和在线用户列表消息
5.一对一聊天过程:
用户a发送与某个在线用户b对话的消息给服务器 服务器查看该用户b是否在线 如果不在线 服务器向用户a发送用户b下线的消息 如果在线 服务器发送转发消息给用户b 反过来过程一样
6.群聊过程:
用户a发送与全部在线用户对话的消息给服务器 服务器取得在线用户列表 将转发消息发送给除a用户的其他在线用户