NettyChat
命令設計以及格式
| 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也是由使用者自己來處理