首頁 > 後端開發 > Golang > 與大猩猩一起創建WebSocket服務器

與大猩猩一起創建WebSocket服務器

Mary-Kate Olsen
發布: 2025-01-27 04:02:08
原創
403 人瀏覽過

Creating a WebSocket Server in Go with Gorilla

>使用大猩猩

建構即時GO Websocket伺服器 Websockets為客戶和伺服器之間的即時雙向通訊提供了強大的解決方案。 本教學指導您透過在GO中建立WebSocket伺服器,利用流行的Gorilla Websocket庫。

目錄的

>

了解Websocket和Gorilla

    >項目設定
  1. 目錄結構
  2. >安裝大猩猩Websocket
  3. >建置Websocket伺服器
  4. 訊息處理
  5. 運行應用程式
  6. 結論
  7. github儲存庫(連結佔位符)
  8. 了解Websocket和Gorilla
與HTTP的Request-Response模型不同,Websocket提供了持續的全雙工通訊管道。 這種恆定的連接允許有效,連續的資料交換。
>

>大猩猩Websocket庫簡化了Websocket在GO中的實現,管理握手,訊息I/O和連接生命週期。

>項目設定

本教學建構了基本的WebSocket伺服器與客戶端:

>

> websocket伺服器接受連線。

客戶與伺服器互動的客戶

  1. 目錄結構
  2. 整理您的專案如下:

>安裝大猩猩Websocket

安裝大猩猩Websocket軟體包:

<code>websocket-server/
├── main.go           # Application entry point
├── handlers/         # WebSocket handler functions
│   └── websocket.go  # Handles WebSocket connections and messages
├── static/           # Client-side HTML/JS files
│   └── index.html    # Simple client interface
└── go.mod            # Go module file</code>
登入後複製

>建置Websocket伺服器

>步驟1:

<code class="language-bash">go get -u github.com/gorilla/websocket</code>
登入後複製

建立

main.go這設定了HTTP伺服器,提供靜態文件,並在

>中處理WebSocket連接

步驟2:websocket處理程序(main.go

<code class="language-go">package main

import (
    "fmt"
    "log"
    "net/http"
    "websocket-server/handlers"
)

func main() {
    http.HandleFunc("/ws", handlers.HandleWebSocket)
    http.Handle("/", http.FileServer(http.Dir("./static")))
    port := ":8080"
    fmt.Printf("Server running on http://localhost%s\n", port)
    log.Fatal(http.ListenAndServe(port, nil))
}</code>
登入後複製

>目錄中,建立/ws

>

websocket.go這個處理程序升級HTTP連接,讀取訊息並迴聲。

>

handlers訊息處理websocket.go

<code class="language-go">package handlers

import (
    "fmt"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool { return true },
}

func HandleWebSocket(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        fmt.Println("Upgrade failed:", err)
        return
    }
    defer conn.Close()
    fmt.Println("Client connected")
    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            fmt.Println("Read failed:", err)
            break
        }
        fmt.Printf("Received: %s\n", msg)
        if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil {
            fmt.Println("Write failed:", err)
            break
        }
    }
}</code>
登入後複製
處理傳入訊息。 您可以將其擴展到實現廣播或訊息持久性之類的功能。

>


運行應用程式

>步驟1:簡單客戶端(

HandleWebSocket

>建立

>目錄中:(本節需要客戶端的JavaScript實作來連接到Websocket。省略了一個基本範例,但許多範例很容易在線上可用。)

>)

>步驟2:運行伺服器index.html

>運行

。 然後,在瀏覽器中開啟index.html(隨附適當的客戶端JavaScript)。


結論

本教學使用大猩猩示範了基本的GO Websocket伺服器。 WebSocket是即時應用程式的理想選擇。 根據需要通過身份驗證,廣播和資料儲存擴展此基礎。

>

github儲存庫

[在此插入github儲存庫連結]

以上是與大猩猩一起創建WebSocket服務器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板