WebSocket は、クライアントとサーバー間のリアルタイムの双方向通信のための堅牢なソリューションを提供します。 このチュートリアルでは、人気のある Gorilla WebSocket ライブラリを利用して、Go で WebSocket サーバーを作成する方法を説明します。
WebSocket は、HTTP の要求/応答モデルとは異なり、永続的な全二重通信チャネルを提供します。 この常時接続により、効率的かつ継続的なデータ交換が可能になります。
Gorilla WebSocket ライブラリは、Go での WebSocket 実装を簡素化し、ハンドシェイク、メッセージ I/O、接続ライフサイクルを管理します。
このチュートリアルでは、基本的な 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>
Gorilla WebSocket パッケージをインストールします:
<code class="language-bash">go get -u github.com/gorilla/websocket</code>
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 接続が処理されます。
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
は受信メッセージを処理します。 これを拡張して、ブロードキャストやメッセージの永続化などの機能を実装できます。
index.html
)index.html
ディレクトリに static
を作成します: (このセクションでは、WebSocket に接続するためにクライアント側の JavaScript 実装が必要です。簡潔にするために基本的な例は省略していますが、多くの例はオンラインですぐに入手できます。)
go run main.go
を実行します。 次に、ブラウザで http://localhost:8080
を開きます (適切なクライアント側 JavaScript が含まれています)。
githubリポジトリ
以上がGorilla を使用して Go で WebSocket サーバーを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。