NettyChat

2016-09-17  本文已影响46人  lingnanlu

命令设计以及格式

| 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 |

操作:

  1. 先判断被邀请者是否存在
  2. 再判断被邀请者是否已经是好友
  3. 如果不是好友 , 向CONTACTS表写一条记录
  4. 如果被邀请者现在已登录, 则向将发送AddContactInviteCmd

ADD_CONTACT_RESPONSE

格式: | username | contactName | isAccepted |

操作: 当收到其它用户的好友请求时, 可以利用该命令接收请求

  1. 判断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也是由用户自己来处理

上一篇 下一篇

猜你喜欢

热点阅读