欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

go語言手機聊天源碼 go語言吧

go語言聊天室實現(xiàn)(七)websocket收消息設(shè)置

上一節(jié)中,我們?yōu)槊總€連接都創(chuàng)建了一個goroutine來讀取其中的消息,現(xiàn)在我們將這個讀取消息的方法實現(xiàn)一下。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、漳平網(wǎng)站維護、網(wǎng)站推廣。

我們在application目錄下新建controllers目錄,并在其中創(chuàng)建一個MessageController.go文件。

首先我們新建一個MessageController的結(jié)構(gòu)體,內(nèi)容如下

這個結(jié)構(gòu)體包括兩個內(nèi)容,一個是我們將連接放在數(shù)組之后,返回的索引,另一個是連接本身.

這個是具體的方法。

我們首先設(shè)置了一下讀消息的大小、超時時間以及超時后需要的操作。

超時時間如果設(shè)置為0,那么就是永不超時。之前在這里直接寫0,被告知需要傳一個time.Time類型的數(shù)據(jù)。最終谷歌后才得到了這個值time.Time{}為"0001-01-01 00:00:00 +0000 UTC"。

我們將用戶手法消息的內(nèi)容定義為一個結(jié)構(gòu)體,然后將用戶的訂閱信息的json通過json.unmarshal轉(zhuǎn)換成這個結(jié)構(gòu)體。

之后的switch操作與我們在Swoole中的操作基本雷同,在查詢到login之后,調(diào)用service中 的login方法來進行注冊。

下一節(jié)中我們再介紹具體的注冊邏輯。

GO語言(二十五):管理依賴項(上)-

當您的代碼使用外部包時,這些包(作為模塊分發(fā))成為依賴項。隨著時間的推移,您可能需要升級或更換它們。Go 提供了依賴管理工具,可幫助您在合并外部依賴項時確保 Go 應(yīng)用程序的安全。

本主題介紹如何執(zhí)行任務(wù)以管理您在代碼中承擔(dān)的依賴項。您可以使用 Go 工具執(zhí)行其中的大部分操作。本主題還介紹了如何執(zhí)行其他一些您可能會覺得有用的依賴相關(guān)任務(wù)。

您可以通過 Go 工具獲取和使用有用的包。在 pkg.go.dev 上,您可以搜索您可能覺得有用的包,然后使用go命令將這些包導(dǎo)入您自己的代碼中以調(diào)用它們的功能。

下面列出了最常見的依賴項管理步驟。

在 Go 中,您將依賴項作為包含您導(dǎo)入的包的模塊來管理。此過程由以下機構(gòu)支持:

您可以搜索pkg.go.dev以查找具有您可能覺得有用的功能的軟件包。

找到要在代碼中使用的包后,在頁面頂部找到包路徑,然后單擊復(fù)制路徑按鈕將路徑復(fù)制到剪貼板。在您自己的代碼中,將路徑粘貼到導(dǎo)入語句中,如下例所示:

在您的代碼導(dǎo)入包后,啟用依賴項跟蹤并獲取包的代碼進行編譯。

要跟蹤和管理您添加的依賴項,您首先要將代碼放入其自己的模塊中。這會在源代碼樹的根目錄創(chuàng)建一個 go.mod 文件。您添加的依賴項將列在該文件中。

要將您的代碼添加到它自己的模塊中,請使用 go mod init命令。例如,從命令行切換到代碼的根目錄,然后按照以下示例運行命令:

該go mod init命令的參數(shù)是您的模塊的模塊路徑。如果可能,模塊路徑應(yīng)該是源代碼的存儲庫位置。

如果一開始您不知道模塊的最終存儲庫位置,請使用安全的替代品。這可能是您擁有的域的名稱或您控制的另一個名稱(例如您的公司名稱),以及來自模塊名稱或源目錄的路徑。

當您使用 Go 工具管理依賴項時,這些工具會更新 go.mod 文件,以便它維護您的依賴項的當前列表。

添加依賴項時,Go 工具還會創(chuàng)建一個 go.sum 文件,其中包含您所依賴的模塊的校驗和。Go 使用它來驗證下載的模塊文件的完整性,特別是對于在您的項目上工作的其他開發(fā)人員。

在代碼中包含存儲庫中的 go.mod 和 go.sum 文件。

當您運行g(shù)o mod init創(chuàng)建用于跟蹤依賴項的模塊時,您指定一個模塊路徑作為模塊的名稱。模塊路徑成為模塊中包的導(dǎo)入路徑前綴。一定要指定一個不會與其他模塊的模塊路徑?jīng)_突的模塊路徑。

至少,一個模塊路徑只需要表明它的來源,例如公司或作者或所有者名稱。但是路徑也可能更能描述模塊是什么或做什么。

模塊路徑通常采用以下形式:

1、Go 工具可以在其中找到模塊源代碼的存儲庫的位置。

例如,它可能是github.com/ /.

如果您認為您可能會發(fā)布模塊供其他人使用,請使用此最佳實踐。

2、一個你控制的名字。

如果您不使用存儲庫名稱,請務(wù)必選擇一個您確信不會被其他人使用的前綴。一個不錯的選擇是您公司的名稱。避免使用常用術(shù)語,例如widgets、utilities或 app。

Go 保證以下字符串不會在包名稱中使用。

1、test– 您可以將test用作模塊路徑前綴以便代碼用于在另一個模塊中本地測試功能進行測試。

使用test作為模塊路徑前綴是測試的一部分。例如,您的測試本身可能會運行g(shù)o mod init test,然后以某種特定方式設(shè)置該模塊,以便使用 Go 源代碼分析工具進行測試。

2、example– 在某些 Go 文檔中用作模塊路徑前綴,例如在創(chuàng)建模塊以跟蹤依賴關(guān)系的教程中。

請注意,Go 文檔還用于example.com說明示例何時可能是已發(fā)布的模塊。

Go語言的開源項目

1.Docker項目

網(wǎng)址為 。

介紹:Docker是一種操作系統(tǒng)層面的虛擬化技術(shù),可以在操作系統(tǒng)和應(yīng)用程序之間進行隔離,也可以稱之為容器。Docker可以在一臺物理服務(wù)器上快速運行一個或多個實例。例如,啟動一個Cent OS操作系統(tǒng),并在其內(nèi)部命令行執(zhí)行指令后結(jié)束,整個過程就像自己在操作系統(tǒng)一樣高效。

2.golang項目

網(wǎng)址為 。

介紹:Go語言的早期源碼使用C語言和匯編語言寫成。從Go 1.5版本自舉后,完全使用Go語言自身進行編寫。Go語言的源碼對了解Go語言的底層調(diào)度有極大的參考意義,建議希望對Go語言有深入了解的讀者讀一讀。

3.Kubernetes項目

網(wǎng)址為 。

介紹:Google公司開發(fā)的構(gòu)建于Docker之上的容器調(diào)度服務(wù),用戶可以通過Kubernetes集群進行云端容器集群管理。

4.etcd項目

網(wǎng)址為 。

介紹:一款分布式、可靠的KV存儲系統(tǒng),可以快速進行云配置。

5.beego項目

網(wǎng)址為 。

介紹:beego是一個類似Python的Tornado框架,采用了RESTFul的設(shè)計思路,使用Go語言編寫的一個極輕量級、高可伸縮性和高性能的Web應(yīng)用框架。

6.martini項目

網(wǎng)址為 。

介紹:一款快速構(gòu)建模塊化的Web應(yīng)用的Web框架。

7.codis項目

網(wǎng)址為 Labs/codis。

介紹:國產(chǎn)的優(yōu)秀分布式Redis解決方案。

8.delve項目

網(wǎng)址為 。

介紹:Go語言強大的調(diào)試器,被很多集成環(huán)境和編輯器整合。

如何配置go語言開發(fā)環(huán)境

1.1 Go 安裝

Go的三種安裝方式

Go有多種安裝方式,你可以選擇自己喜歡的。這里我們介紹三種最常見的安裝方式:

Go源碼安裝:這是一種標準的軟件安裝方式。對于經(jīng)常使用Unix類系統(tǒng)的用戶,尤其對于開發(fā)者來說,從源碼安裝可以自己定制。

Go標準包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統(tǒng)。這種方式適合快速安裝,可根據(jù)自己的系統(tǒng)位數(shù)下載好相應(yīng)的安裝包,一路next就可以輕松安裝了。**推薦這種方式**

第三方工具安裝:目前有很多方便的第三方軟件包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應(yīng)系統(tǒng)的用戶。

最后,如果你想在同一個系統(tǒng)中安裝多個版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎么處理。

Go源碼安裝

在Go的源代碼中,有些部分是用Plan 9 C和ATT匯編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。

在Mac系統(tǒng)中,只要你安裝了Xcode,就已經(jīng)包含了相應(yīng)的編譯工具。

在類Unix系統(tǒng)中,需要安裝gcc等工具。例如Ubuntu系統(tǒng)可通過在終端中執(zhí)行sudo apt-get install gcc

libc6-dev來安裝編譯工具。

在Windows系統(tǒng)中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設(shè)置相應(yīng)的環(huán)境變量。

你可以直接去官網(wǎng)下載源碼,找相應(yīng)的goVERSION.src.tar.gz的文件下載,下載之后解壓縮到$HOME目錄,執(zhí)行如下代碼:

cd go/src

./all.bash

運行all.bash后出現(xiàn)"ALL TESTS PASSED"字樣時才算安裝成功。

上面是Unix風(fēng)格的命令,Windows下的安裝方式類似,只不過是運行all.bat,調(diào)用的編譯器是MinGW的gcc。

如果是Mac或者Unix用戶需要設(shè)置幾個環(huán)境變量,如果想重啟之后也能生效的話把下面的命令寫到.bashrc或者.zshrc里面,

export GOPATH=$HOME/gopath

export PATH=$PATH:$HOME/go/bin:$GOPATH/bin

如果你是寫入文件的,記得執(zhí)行bash .bashrc或者bash

.zshrc使得設(shè)置立馬生效。

如果是window系統(tǒng),就需要設(shè)置環(huán)境變量,在path里面增加相應(yīng)的go所在的目錄,設(shè)置gopath變量。

當你設(shè)置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經(jīng)安裝成功

圖1.1 源碼安裝之后執(zhí)行Go命令的圖

如果出現(xiàn)Go的Usage信息,那么說明Go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了Go的安裝目錄。

關(guān)于上面的GOPATH將在下面小節(jié)詳細講解

Go標準包安裝

Go提供了每個平臺打好包的一鍵安裝,這些包默認會安裝到如下目錄:/usr/local/go

(Windows系統(tǒng):c:\Go),當然你可以改變他們的安裝位置,但是改變之后你必須在你的環(huán)境變量中設(shè)置如下信息:

export GOROOT=$HOME/go

export GOPATH=$HOME/gopath

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

上面這些命令對于Mac和Unix用戶來說最好是寫入.bashrc或者.zshrc文件,對于windows用戶來說當然是寫入環(huán)境變量。

如何判斷自己的操作系統(tǒng)是32位還是64位?

我們接下來的Go安裝需要判斷操作系統(tǒng)的位數(shù),所以這小節(jié)我們先確定自己的系統(tǒng)類型。

Windows系統(tǒng)用戶請按Win+R運行cmd,輸入systeminfo后回車,稍等片刻,會出現(xiàn)一些系統(tǒng)信息。在“系統(tǒng)類型”一行中,若顯示“x64-based

PC”,即為64位系統(tǒng);若顯示“X86-based PC”,則為32位系統(tǒng)。

Mac系統(tǒng)用戶建議直接使用64位的,因為Go所支持的Mac OS X版本已經(jīng)不支持純32位處理器了。

Linux系統(tǒng)用戶可通過在Terminal中執(zhí)行命令arch(即uname

-m)來查看系統(tǒng)信息:

64位系統(tǒng)顯示

x86_64

32位系統(tǒng)顯示

i386

Mac 安裝

訪問下載地址,32位系統(tǒng)下載go1.4.2.darwin-386-osx10.8.pkg,64位系統(tǒng)下載go1.4.2.darwin-amd64-osx10.8.pkg,雙擊下載文件,一路默認安裝點擊下一步,這個時候go已經(jīng)安裝到你的系統(tǒng)中,默認已經(jīng)在PATH中增加了相應(yīng)的~/go/bin,這個時候打開終端,輸入go

看到類似上面源碼安裝成功的圖片說明已經(jīng)安裝成功

如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。

Linux 安裝

訪問下載地址,32位系統(tǒng)下載go1.4.2.linux-386.tar.gz,64位系統(tǒng)下載go1.4.2.linux-amd64.tar.gz,

假定你想要安裝Go的目錄為 $GO_INSTALL_DIR,后面替換為相應(yīng)的目錄路徑。

解壓縮tar.gz包到安裝目錄下:tar zxvf go1.4.2.linux-amd64.tar.gz -C

$GO_INSTALL_DIR。

設(shè)置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin

然后執(zhí)行g(shù)o

圖1.2 Linux系統(tǒng)下安裝成功之后執(zhí)行g(shù)o顯示的信息

如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。

Windows 安裝

訪問Google Code 下載頁,32

位請選擇名稱中包含 windows-386 的 msi 安裝包,64 位請選擇名稱中包含 windows-amd64 的。下載好后運行,不要修改默認安裝目錄

C:\Go\,若安裝到其他位置會導(dǎo)致不能執(zhí)行自己所編寫的 Go 代碼。安裝完成后默認會在環(huán)境變量 Path 后添加 Go 安裝目錄下的 bin 目錄

C:\Go\bin\,并添加環(huán)境變量 GOROOT,值為 Go 安裝根目錄 C:\Go\ 。

驗證是否安裝成功

在運行中輸入 cmd 打開命令行工具,在提示符下輸入 go,檢查是否能看到 Usage 信息。輸入

cd %GOROOT%,看是否能進入 Go 安裝目錄。若都成功,說明安裝成功。

不能的話請檢查上述環(huán)境變量 Path 和 GOROOT 的值。若不存在請卸載后重新安裝,存在請重啟計算機后重試以上步驟。

第三方工具安裝

GVM

gvm是第三方開發(fā)的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當?shù)姆奖?,安裝gvm使用如下命令:

bash (curl -s -S -L )

安裝完成后我們就可以安裝go了:

gvm install go1.4.2

gvm use go1.4.2

也可以使用下面的命令,省去每次調(diào)用gvm use的麻煩: gvm use go1.4.2 --default

執(zhí)行完上面的命令之后GOPATH、GOROOT等環(huán)境變量會自動設(shè)置好,這樣就可以直接使用了。

apt-get

Ubuntu是目前使用最多的Linux桌面系統(tǒng),使用apt-get命令來管理軟件包,我們可以通過下面的命令來安裝Go,為了以后方便,應(yīng)該把

git mercurial 也安裝上:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:gophers/go

sudo apt-get update

sudo apt-get install golang-stable git-core mercurial

homebrew

homebrew是Mac系統(tǒng)下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應(yīng)該把

git mercurial 也安裝上:

brew update brew upgrade

brew install go

brew install git

brew install mercurial

go語言聊天室實現(xiàn)(六)創(chuàng)建HTTP連接,并升級為長連接

我們在mian函數(shù)中,首先初始化配置文件,然后新建http連接。

這個連接創(chuàng)建之后,監(jiān)聽服務(wù)器的9999端口。如果url的路徑后綴為 "/ws",就轉(zhuǎn)發(fā)到ws/ws.go中的IndexHandler方法中。

這個方法中首先我們創(chuàng)建一個websocket的Upgrader實例,然后我們使用Upgrader的upgrade方法來升級一下我們的連接為長連接。

升級完成之后會返回一個*websocket.Conn的連接,我們之后所有的關(guān)于連接的操作,都是基于該conn的。

在該連接完成之后,我們將連接存放到一個名為Client的map中,以便之后管理更為方便。

之后,我們啟動一個goroutine來讀取連接中發(fā)送的信息內(nèi)容,再根據(jù)內(nèi)容進行相應(yīng)的操作。

go語言聊天室實現(xiàn)(二)gorilla/websocket中的聊天室示例

我們可以看到 gorilla/websocket中的examples中有一個聊天室的demo。

我們進入該項目可以看到里面有這樣的一些內(nèi)容

按照官方的運行方式來運行這個項目

在瀏覽器中打開8080端口,可以看到該項目可以被成功運行了。

就是這樣一個簡單的demo。

然后我們?nèi)タ匆幌滤木唧w實現(xiàn)。

在這個項目中首先定義了一個hub的結(jié)構(gòu)體:

這個結(jié)構(gòu)體中,clients代表所有已經(jīng)注冊的用戶,broadcast管道會存儲客戶端發(fā)送來的信息。 register是一個*Client類型的管道,用于存儲新注冊的用戶,unregister管道反之。

我們打開main.go,main函數(shù)的源碼為:

在這里首先會新開一個goroutine,去跑hub的run方法,run方法中一個死循環(huán),不停地去輪詢hub中的內(nèi)容

如果取到了新用戶,就加入到clients中,如果取到了信息,就循環(huán)所有的client,將信息寫到client.send中。

我們看到在請求路徑為根的時候,它會請求一個函數(shù),而這個函數(shù)就是將home.html發(fā)送到客戶端。

而在請求路徑為“/ws”的時候,他會執(zhí)行一個serveWS的函數(shù)。

每當一個新的用戶進來之后,首先將連接升級為長連接,然后將當前的client寫到register中,由hub.run函數(shù)去做處理。然后開啟兩個goroutine,一個去讀client中發(fā)送來的數(shù)據(jù),一個將數(shù)據(jù)寫入到所有的client中,去發(fā)送給用戶。

這就是整個聊天室的實現(xiàn)原理。

分享題目:go語言手機聊天源碼 go語言吧
網(wǎng)頁路徑:http://aaarwkj.com/article0/dooddoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計公司、面包屑導(dǎo)航、ChatGPT標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
女人的天堂av免费在线观看| 黄片视频免费在线观看播放| 精品亚洲欧美日韩国产| 少妇太爽高潮在线播放| 青青草原成年人免费看| 综合久久99中文综合久久| 蜜臀国产综合久久第一页| 国产传媒在线播放一区| 女厕所偷拍一区二区三区| 久国产精品一区国产精品| 五月婷婷六月丁香免费视频| 日韩精品在线免费观看了| 伊人久久精品一区二区| 加勒比东京热视频在线| 精品欧美黑人一区二区| 久久国产精品欧美熟妇| 日本国产在线一区二区| 热久久精品只有这里有| 国产自拍成人精品视频| 日韩中文字幕专区在线| 日本一区不卡二区高清| 一区二区高清免费日本| 农村人妻一区二区三区视频| 日韩不卡的一区免费视频| 成人av男人天堂东京热| 色桃子av一区二区三区| 国产欧美日韩精品三级| 欧美日韩午夜久久免费| 亚洲欧美日韩专区一区| 蜜桃视频国产在线观看| 二区三区成人在线观看| 久久精品国产亚洲av高清一区| 女性裸体无遮挡啪啪网站| 亚洲乱码精品一区二区| 亚洲精品老司机福利在线| 日韩av在线不卡一区二区| 国内精品偷拍一区二区三区| 国产一区中文字幕在线| 国产精品午夜福利91| 操老熟女一区二区三区| 久久国产欧美日韩精品免费|