亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么用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

玉林市| 岚皋县| 招远市| 大方县| 威信县| 玉山县| 哈尔滨市| 湟中县| 湖北省| 榆社县| 炉霍县| 滕州市| 富平县| 朔州市| 繁昌县| 盐亭县| 宁南县| 伽师县| 油尖旺区| 丽水市| 古田县| 龙州县| 苍梧县| 澄江县| 遂平县| 沙洋县| 新蔡县| 永城市| 建宁县| 宁晋县| 巫山县| 崇阳县| 临猗县| 平江县| 霍林郭勒市| 隆尧县| 澄江县| 秦皇岛市| 古蔺县| 关岭| 佳木斯市|