91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用go實現多人聊天室

發布時間:2021-09-04 20:42:30 來源:億速云 閱讀:167 作者:chen 欄目:大數據

本篇內容介紹了“怎么用go實現多人聊天室”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!


項目展示

我們可以到github上把項目克隆到本地,然后輸入如下命令:

怎么用go實現多人聊天室

這里需要注意一下安裝bee工具時可能會出現問題,這里需要進行測試,在終端輸入bee,如果出現下圖所示,則沒有問題,如果沒有的話,則安裝bee工具出錯,可以看我的這篇博客(https://blog.csdn.net/qq_39397165/article/details/106406773)進行安裝。

怎么用go實現多人聊天室  

安裝好環境后,我們就可以進行運行項目,終端下輸入bee run即可運行項目,運行成功如下圖所示:

怎么用go實現多人聊天室  

打開瀏覽器輸入localhost:8080,可以看到如下界面:

 

沒有賬號我們可以先進行注冊,點擊注冊按鈕,可以進入注冊界面,輸入相關信息即可完成注冊。

怎么用go實現多人聊天室  

之后輸入手機號和密碼就可以進入聊天室了,兩個人就可以在聊天室進行聊天了,截圖如下:

怎么用go實現多人聊天室
怎么用go實現多人聊天室

我們可以看到聊天記錄中進行了詳細介紹,就是這樣一個簡單項目,可以快速熟悉beego框架。下面對一些知識點進行介紹。

WebSocket

既然要做聊天室,我們就要是實時通訊的,這里可選擇方案有很多:

輪詢:客戶端以一定的時間間隔發送Ajax請求,這種方式實現起來簡單,但是消耗帶寬和服務器資源,需要頻繁建立和釋放TCP連接。

長輪詢:與普通輪詢不一樣,服務端在收到請求后會保持住不立即返回響應,等到有消息更新才會響應并關閉連接,客戶端處理完響應再重新發起請求。較之普通輪詢沒有無用的請求,但服務器保持連接也是有消耗的,如果服務端數據變化頻繁的話和普通輪詢并無兩樣。

長連接:在頁面中嵌入一個隱藏的iframe,將其src設為一個長連接的請求,這樣服務端就能不斷向客戶端發送數據,優缺點與長輪詢相仿。

這幾種技術都有很大缺點,導致服務器開銷很大,所以我最終選擇了websocket,只需要一次握手,就能完成客戶端和服務之間的連接,之后通過數據幀的方式在這個連接上進行通訊,這個通訊也是雙向的,服務端也可以完成主動向客戶端發送消息,這樣也降低了一大堆的業務邏輯,代碼編寫也變得簡單了起來。

Golang使用websocket也很簡單,只需要導入"github.com/gorilla/websocket"這個包我們就可以使用了。具體使用就不再這里介紹了,看一下再這個項目的代碼示例吧:

怎么用go實現多人聊天室
怎么用go實現多人聊天室

beego

這里我是用的是beego框架,這個框架使用起來還是很簡單的,畢竟是國人開發的,有完整的中文文檔,根據文檔我們就可以很快達到入門級別。beego是一個快速開發Go應用的HTTP框架,他可以用來快速開發API、WEB及后端服務等各種應用,是一個RESTful的框架,結合了Go本身的一些特性而設計一個框架。具體學習這個框架我們到(https://beego.me/quickstart)這個網站進行學習,里面有詳細的介紹。作為一個入門框架還是不錯的。

這里我使用了該框架的工具bee,進行項目創建,創建的是一個web項目,創建好后整個項目架構就都有了,項目架構如下:

怎么用go實現多人聊天室

從目錄結構中我們可以看出,conf用來放置配置文件的,models、views、controllers這三個目錄符合MVC架構,main.go是入口文件、routers目錄用來配置路由,整個項目結構就是這樣,是不是很簡單呢。

Mysql

這里使用的是Mysql數據庫。這里只創建了兩個表,一個用戶表,一個消息表。用戶表用來存放用戶信息,消息表用來存放消息記錄。因為是一個練手項目,所以沒有設計更多表,只有入門級別。表結構如下:

怎么用go實現多人聊天室
怎么用go實現多人聊天室

這里在介紹一下beego ORM。beego ORM是一個強大的Go語言ORM框架。支持數據庫驅動有三個:Mysql、PostgreSQL、Sqlite3,這里使用的是Mysql。輸入如下命令即可完成安裝:

go get github.com/astaxie/beego/orm

安裝完成后,我們開始使用。因為Golang語言有init函數,所以我們可以將注冊數據庫驅動、注冊一個別名數據庫這些方法放到init函數,完成數據庫的驅動注冊。代碼示例如下:

怎么用go實現多人聊天室  

這里我們使用了RunSyndb這個方法,使用該方法我們就不用去手動創建數據庫表了,他會根據結構體中的表結構主動創建,提高了效率。

這里還有一個需要注意的點,如我們我需要我們的項目比較復雜,需要高級查詢,是必須要進行注冊模型的,否則將無法使用。使用RegisterModel即可完成模型注冊。使用樣例如下:

怎么用go實現多人聊天室  


“怎么用go實現多人聊天室”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

焉耆| 巴林右旗| 邹城市| 顺昌县| 沭阳县| 浠水县| 锡林浩特市| 肥东县| 开原市| 泽库县| 南安市| 波密县| 湘乡市| 达尔| 东阿县| 山阳县| 张家港市| 湄潭县| 旬阳县| 深州市| 宁国市| 洞口县| 昭觉县| 西乡县| 柯坪县| 阳城县| 中西区| 台中市| 萨嘎县| 德江县| 会昌县| 新蔡县| 密山市| 财经| 舒兰市| 迁西县| 达孜县| 临桂县| 新民市| 昌宁县| 衡水市|