go websocket 單聊 推送(羣聊)實現

直接上代碼了

在main方法裏進行端口監聽

在server包實現具體邏輯,首先定義3個結構體

分別是所有客戶端管理者(申明瞭有兩個map 這兩個map分別是綁定的是所有客戶端連接,和單個客戶端連接),後面兩個分別是單個客戶端和上傳數據類型

接下來就是具體的實現邏輯

這只是一個demo示例,其中只開了一個read不斷讀取的協程,沒有開啓write協程,讓他們通過管道來通信,沒有利用到go高併發的優勢,但是這樣一方面也能防止通道阻塞。代碼寫的很一般,比如沒有代碼分層,switch都寫在一起了,按理說至少還能抽出來一個processData。。總而言之 這只是個簡單的demo

具體效果

 

如果關閉chatroom,服務器端會自動刪除兩個map 的中,推送的時候會提示沒有發現client..

綜上,這只是一個demo ,很多細節沒有考慮,具體實際場景也有很大差異。。連最基本的redis 和mysql 都沒用到,比如消息要留檔,已讀未讀 可能需要開啓一個goroutine 去入庫,如果是羣聊 可能還需要一個羣id,這個羣id下面可能還需要維護多個client 等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章