ホームページ > バックエンド開発 > Golang > Gorilla を使用して Go で WebSocket サーバーを作成する

Gorilla を使用して Go で WebSocket サーバーを作成する

Mary-Kate Olsen
リリース: 2025-01-27 04:02:08
オリジナル
403 人が閲覧しました

Creating a WebSocket Server in Go with Gorilla

Gorilla を使用したリアルタイム Go WebSocket サーバーの構築

WebSocket は、クライアントとサーバー間のリアルタイムの双方向通信のための堅牢なソリューションを提供します。 このチュートリアルでは、人気のある Gorilla WebSocket ライブラリを利用して、Go で WebSocket サーバーを作成する方法を説明します。


目次

  1. WebSocket と Gorilla について
  2. プロジェクトのセットアップ
  3. ディレクトリ構造
  4. Gorilla WebSocket のインストール
  5. WebSocket サーバーの構築
  6. メッセージ処理
  7. アプリケーションの実行
  8. 結論
  9. GitHub リポジトリ (リンク プレースホルダー)

WebSocket と Gorilla について

WebSocket は、HTTP の要求/応答モデルとは異なり、永続的な全二重通信チャネルを提供します。 この常時接続により、効率的かつ継続的なデータ交換が可能になります。

Gorilla WebSocket ライブラリは、Go での WebSocket 実装を簡素化し、ハンドシェイク、メッセージ I/O、接続ライフサイクルを管理します。


プロジェクトのセットアップ

このチュートリアルでは、基本的な WebSocket サーバーとクライアントを構築します。

  1. 接続を受け入れる WebSocket サーバー。
  2. サーバーと対話するクライアント。

ディレクトリ構造

プロジェクトを次のように整理します:

<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>
ログイン後にコピー

Gorilla WebSocket のインストール

Gorilla WebSocket パッケージをインストールします:

<code class="language-bash">go get -u github.com/gorilla/websocket</code>
ログイン後にコピー

WebSocket サーバーの構築

ステップ 1: main.go

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>
ログイン後にコピー

これにより、HTTP サーバーがセットアップされ、静的ファイルが提供され、/ws で WebSocket 接続が処理されます。

ステップ 2: WebSocket ハンドラー (websocket.go)

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>
ログイン後にコピー

このハンドラーは、HTTP 接続をアップグレードし、メッセージを読み取り、エコーバックします。


メッセージ処理

HandleWebSocket は受信メッセージを処理します。 これを拡張して、ブロードキャストやメッセージの永続化などの機能を実装できます。


アプリケーションの実行

ステップ 1: シンプルクライアント (index.html)

index.html ディレクトリに static を作成します: (このセクションでは、WebSocket に接続するためにクライアント側の JavaScript 実装が必要です。簡潔にするために基本的な例は省略していますが、多くの例はオンラインですぐに入手できます。)

ステップ 2: サーバーを実行する

go run main.goを実行します。 次に、ブラウザで http://localhost:8080 を開きます (適切なクライアント側 JavaScript が含まれています)。


結論

このチュートリアルは、Gorillaを使用した基本的なGo WebSocketサーバーを示しています。 WebSocketは、リアルタイムアプリケーションに最適です。 必要に応じて、認証、放送、データストレージでこの基盤を拡張します。

githubリポジトリ

[ここにgithubリポジトリリンクを挿入]

以上がGorilla を使用して Go で WebSocket サーバーを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート