我相信,有前面兩篇的介紹,稍微熟悉socket程序設計的開發人員,應該徹底能自行設計出一個基於webSocket的在線交互系統了,趁着我如今還有幾分熱情,乾脆寫個完整的聊天室,就當是我爲業內socket開發新手所做的一點小貢獻吧。歡迎廣大朋友對個人思路和代碼拍磚,可以互相促進也就是個人願望了。web
咱們先來整體規劃一下咱們的聊天室會有些什麼功能吧(先列着,之後可能擴展):服務器
① 登陸聊天室socket
②向全部在線聊友廣播消息spa
③ 針對某在線聊友發送消息,也即私聊設計
④ 退出聊天室code
這四點,也即一個最簡單的聊天室功能了,爲此,我設計了一個簡單的應用協議,先說明一下,爲了可以更好的讓你們理解,我就沒用像前文的協議那樣,節約字符了,相信聰明的你必定在真正設計時,不會像我如今這樣的。blog
我如今所說的協議,是針對咱們上節中DataFrame中的Text的內容,爲知足客戶端和服務器在聊天時的有效溝通而制定的,全部命令都是以3個字符的命令碼開頭,每條命令都有四部分組成:命令字,消息來源,消息去向,消息體,具體命令字定義以下:ip
① 登陸聊天室開發
具體流程爲:客戶端和服務器創建鏈接後,客戶端立刻發送以下格式:字符串
LIN爲登陸的命令碼,逍遙谷主 爲用戶的暱稱,也即在聊天室中,你顯示的名字。
登陸成功後,服務器會爲你產生一個整形ID,同時向全部在線的客戶端發出通知,有人登陸了,同時,也會將當前全部在線的客戶信息,返回給你,這樣,你一登陸,聊天室內全部人就知道你來了,同時,你也能知道,如今聊天室中有哪些人在線了。
② 發送消息
其中,第一個0,爲發送方的ID,而第二個ID,即接收方的ID(大於0),若是你要廣播給全部人,這個id設置爲0便可。
③在線列表
第一個0,固定,表明服務器發來的,第二個0,在實際中是你本身的id
④退出聊天室
第一個0即表明退出的客戶端id,這樣,當一個客戶端退出後,其餘客戶的界面中,相應的在線列表就能準備刷新了。
這條命令,原本後面兩個零能夠不要的,但爲了統一格式,先留着吧,就當備用項,呵呵。
要實現的界面效果,我就先借用咱們項目中的一個界面,之後再把內容填充好,你們先預覽一下,這也算是咱們的目標了
這一篇就當是準備工做吧,下一篇,咱們詳細解說一下,登陸的實現。
源碼--可留言。