Golang で WebSocket を使用してリアルタイム データ更新を行う方法
概要:
WebSocket は、Web ブラウザとサーバー間の全二重通信の方法です。コミュニケーションのために設計されたテクノロジー。 Golang では、標準ライブラリの net/http
と github.com/gorilla/websocket
を使用して WebSocket 機能を実装できます。この記事では、Golang で WebSocket を使用してリアルタイムのデータ更新を行う方法を紹介し、いくつかのコード例を示します。
ステップ:
ステップ 1: HTTP サーバーの作成
まず、WebSocket 接続リクエストを処理する HTTP サーバーを作成する必要があります。簡単なコード例を次に示します。
package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) log.Println("HTTP server is starting at http://localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
このコードは、ルート パス (「/」) を index.html
静的ファイルというファイルにマップする単純な HTTP サーバーを作成します。
ステップ 2: WebSocket 接続を処理する
次に、WebSocket 接続リクエストを処理できるように HTTP サーバーのコードを変更する必要があります。 github.com/gorilla/websocket
ライブラリを使用して、WebSocket 接続を処理できます。変更されたサンプル コードは次のとおりです。
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var ( upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } clients = make(map[*websocket.Conn]bool) ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("Failed to upgrade connection:", err) return } clients[conn] = true for { _, msg, err := conn.ReadMessage() if err != nil { log.Println("Failed to read message from client:", err) delete(clients, conn) break } for client := range clients { err := client.WriteMessage(websocket.TextMessage, msg) if err != nil { log.Println("Failed to write message to client:", err) client.Close() delete(clients, conn) } } } }) log.Println("WebSocket server is starting at ws://localhost:8080/ws") log.Fatal(http.ListenAndServe(":8080", nil)) }
このコードでは、upgrader
オブジェクトを作成し、すべての接続クライアントを保存するための clients
変数を定義します。新しい WebSocket リクエストがある場合、接続を WebSocket 接続にアップグレードし、それを clients
変数に追加します。次に、ループを通じてクライアントからのメッセージを読み取り、接続されているすべてのクライアントにメッセージを送信します。
ステップ 3: フロントエンド ページを作成する
最後に、WebSocket サーバーに接続し、リアルタイムのデータ更新を表示するフロントエンド ページを作成する必要があります。以下は、単純な HTML ページの例 (index.html
) です。
<!DOCTYPE html> <html> <head> <title>WebSocket Demo</title> </head> <body> <h1>WebSocket Demo</h1> <input type="text" id="message-input"> <button onclick="send()">Send</button> <ul id="message-list"></ul> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onmessage = function(event) { var message = document.createElement("li"); message.textContent = event.data; document.getElementById("message-list").appendChild(message); }; function send() { var input = document.getElementById("message-input"); var message = input.value; input.value = ""; socket.send(message); } </script> </body> </html>
このコードは、WebSocket 接続を作成し、メッセージの到着時に onmessage
イベントをリッスンします。 、表示するメッセージを ul
要素に追加します。さらに、ユーザーがメッセージを入力し、WebSocket 経由でサーバーに送信できるように、入力ボックスと送信ボタンが提供されます。
概要:
上記の手順により、Golang で WebSocket を使用してリアルタイムのデータ更新を行うことができます。 HTTP サーバーを作成し、WebSocket 接続を処理し、フロントエンド ページと対話することにより、Web アプリケーションでリアルタイムのデータ通信を実現できます。もちろん、これは単なる例であり、実際の使用時には特定のニーズに応じて拡張や変更が必要になる場合があります。この記事がお役に立てば幸いです。WebSocket の使用が成功することを祈っています。
以上がGolang で WebSocket を使用してリアルタイムのデータ更新を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。