基於.NET的WebSocket實例:在線聊天室

我相信,有前面兩篇的介紹,稍微熟悉socket程序設計的開發人員,應該徹底能自行設計出一個基於webSocket的在線交互系統了,趁着我如今還有幾分熱情,乾脆寫個完整的聊天室,就當是我爲業內socket開發新手所做的一點小貢獻吧。歡迎廣大朋友對個人思路和代碼拍磚,可以互相促進也就是個人願望了。web

  咱們先來整體規劃一下咱們的聊天室會有些什麼功能吧(先列着,之後可能擴展):服務器

  ① 登陸聊天室socket

  ②向全部在線聊友廣播消息spa

  ③ 針對某在線聊友發送消息,也即私聊設計

  ④ 退出聊天室code

  這四點,也即一個最簡單的聊天室功能了,爲此,我設計了一個簡單的應用協議,先說明一下,爲了可以更好的讓你們理解,我就沒用像前文的協議那樣,節約字符了,相信聰明的你必定在真正設計時,不會像我如今這樣的。blog

  我如今所說的協議,是針對咱們上節中DataFrame中的Text的內容,爲知足客戶端和服務器在聊天時的有效溝通而制定的,全部命令都是以3個字符的命令碼開頭,每條命令都有四部分組成:命令字,消息來源,消息去向,消息體,具體命令字定義以下:ip

  ① 登陸聊天室開發

  具體流程爲:客戶端和服務器創建鏈接後,客戶端立刻發送以下格式:字符串

LIN,0,0,逍遙谷主

  LIN爲登陸的命令碼,逍遙谷主 爲用戶的暱稱,也即在聊天室中,你顯示的名字。

  登陸成功後,服務器會爲你產生一個整形ID,同時向全部在線的客戶端發出通知,有人登陸了,同時,也會將當前全部在線的客戶信息,返回給你,這樣,你一登陸,聊天室內全部人就知道你來了,同時,你也能知道,如今聊天室中有哪些人在線了。

  ② 發送消息

MSG,0,0,內容

  其中,第一個0,爲發送方的ID,而第二個ID,即接收方的ID(大於0),若是你要廣播給全部人,這個id設置爲0便可。

  ③在線列表

OLN,0,0,在線id和姓名組合字符串

  第一個0,固定,表明服務器發來的,第二個0,在實際中是你本身的id

  ④退出聊天室

OUT,0,0,0

  第一個0即表明退出的客戶端id,這樣,當一個客戶端退出後,其餘客戶的界面中,相應的在線列表就能準備刷新了。

  這條命令,原本後面兩個零能夠不要的,但爲了統一格式,先留着吧,就當備用項,呵呵。

  要實現的界面效果,我就先借用咱們項目中的一個界面,之後再把內容填充好,你們先預覽一下,這也算是咱們的目標了

  

  這一篇就當是準備工做吧,下一篇,咱們詳細解說一下,登陸的實現。

 

源碼--可留言。

相關文章
相關標籤/搜索