基於Netty的聊天系統(二)協議定製----登陸篇

上一篇文章咱們討論了聊天的基本流程,那麼咱們如今基於上一篇文章的流程開始定義協議,若是有朋友有更好的建議,能夠在下邊回覆一塊兒學習討論,咱們說登陸分爲兩部分,第一部分爲和服務器的鏈接階段,第二部分爲驗證階段,那麼首先咱們基於這2個部分來指定協議:android

鏈接階段:ios

{"id":"xxxx","#":"conn","u":1000@android/ios,"v":100}json

id:客戶端生成的id數組

#:表示行爲,通俗意義是那個說,咱們要作什麼操做,該屬性主要是對應服務器上的Handler服務器

u:這裏表示用戶信息的意思,其實後邊這個字符串表明2個含義,@以前是用戶id,@以後是用戶的手機版本,咱們要獲取用戶的手機版本,分開寫也能夠,可是在這裏感受不必分開就直接何在一塊兒了學習

v:用戶當前該軟件的版本號,主要是爲了檢查用戶手機上當前版本用的加密

用戶講上述json發送到服務器,那麼服務器要響應客戶端,因此這裏咱們還要定義服務器端給客戶端返回的協議格式spa

響應鏈接階段:ip

{"id":"xxxx","#":"conn","ssl":"[1]","rar":"[1,2]","ips":"[]"}ssl

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成功,全部的成功均可以用該協議,那麼這就是咱們的登陸階段的協議制定,關於聊天的協議咱們休息一會,在下一篇在詳細介紹,歡迎你們來討論

相關文章
相關標籤/搜索