命令设计以及格式
| comType | id (用来标记命令) |
表示命令类型, 剩下的不同命令格式不同
CREATE_ACCOUNT
格式: | username | password |
操作: USER中添加一条目
CHANGE_PASSWORD
| username | oldpassword | newpassword |
LOGIN
格式: | username | password |
操作: 判断ChannelInfo中的UserInfo是否为null, 如果不是null则已登录, 如果是null, 则从数据库查询出User信息, 然后为ChannelInfo中的UserInfo赋值
LOGOUT
操作: 与LOGIN相反
EXIT
ADD_CONTACT_INVITE 添加好友请求
格式: | username | contactName |
操作:
- 先判断被邀请者是否存在
- 再判断被邀请者是否已经是好友
- 如果不是好友 , 向CONTACTS表写一条记录
- 如果被邀请者现在已登录, 则向将发送AddContactInviteCmd
ADD_CONTACT_RESPONSE
格式: | username | contactName | isAccepted |
操作: 当收到其它用户的好友请求时, 可以利用该命令接收请求
- 判断Contact表中是否有一个PENDING requets
REMOVE_CONTACT
| contactName |
GET_CONTACT_OF_USERS 该命令是什么含义
| contactState |
GET_CONTACT_OF_USERS_RESPONSE
| usernames |
MESSAGE
| senderName | recipientName | message |
GET_PENGDING_MESSAGES
GET_PENGDING_MESSAGES_RESPONSE
| senders | messages |
SHUTDOWN_SERVER
OK
ERROR
| error_code | description |
保活机制
利用的IdleStateHandler, 在handler加入pipeline时, 往TaskQueue中添加相应的任务来触发相关的WriteIdle或ReadIdle Event,该Event也是由用户自己来处理
网友评论