Websockets は、Web ブラウザとサーバーの間の双方向通信を確立するテクノロジーで、Web アプリケーションがリアルタイムでクライアントにデータをプッシュできるようにします。たとえば、Websocket を使用してオンライン チャット ルームを実装し、ページを更新せずに Web アプリケーションにリアルタイムのチャット コンテンツを直接表示できます。
この記事では、Go 言語で Websocket を使用してリアルタイム通信を行う方法を紹介します。これを実現するには、Gorilla Websockets ライブラリを使用します。このライブラリは、いくつかの非常に便利なユーティリティ関数とサンプル コードを提供します。
1. Gorilla Websocket のインストール
始める前に、Gorilla Websocket をインストールする必要があります。次のコマンドを使用してインストールできます:
go get github.com/gorilla/websocket
2. Websocket 接続を確立する
次に、Websocket 接続を確立するコードの作成を開始できます。 Websocket 接続を処理するには、HTTP ハンドラー関数を定義する必要があります。以下は簡単なサンプル コードです。
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func handleWebsocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() for { messageType, p, err := conn.ReadMessage() if err != nil { log.Println(err) return } log.Printf("received: %s", p) err = conn.WriteMessage(messageType, p) if err != nil { log.Println(err) return } } } func main() { http.HandleFunc("/ws", handleWebsocket) log.Fatal(http.ListenAndServe(":8080", nil)) }
このサンプル コードでは、Websocket 接続を処理する handleWebsocket 関数を定義します。この関数は、Upgrader を使用して、HTTP ハンドラーを Websockets ハンドラーにアップグレードします。 Upgrader は、接続の読み取りおよび書き込みバッファーのサイズを設定するために使用される、ReadBufferSize や WriteBufferSize などのいくつかのパラメーターを定義する構造体です。
関数では、接続からメッセージを読み取り、ターミナルにメッセージを出力して、クライアントに送り返します。読み取りまたは書き込み中にエラーが発生した場合、接続は中断されます。 main 関数では、handleWebsocket 関数を HTTP プロセッサに登録し、HTTP サーバーを起動します。
3. リアルタイム通信に Websocket を使用する
これで、リアルタイム通信に使用できる単純な Websocket プロセッサを作成できました。次に、Websocket 接続をテストできるように、単純な Web アプリケーションを作成しましょう。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Websockets Example</title> </head> <body> <input id="message-input" type="text" placeholder="Type a message..."> <button id="send-button">Send</button> <ul id="message-list"></ul> <script> const socket = new WebSocket('ws://localhost:8080/ws'); socket.addEventListener('message', event => { const li = document.createElement('li'); li.textContent = event.data; document.querySelector('#message-list').appendChild(li); }); document.querySelector('#send-button').addEventListener('click', () => { const input = document.querySelector('#message-input'); const value = input.value.trim(); if (value) { socket.send(value); input.value = ''; } }); </script> </body> </html>
このサンプル Web アプリケーションでは、テキスト入力ボックス、送信ボタン、メッセージ リストを含むページを作成します。ユーザーがテキスト ボックスにメッセージを入力し、送信ボタンをクリックすると、Websocket 接続を使用してメッセージがサーバーに送信されます。その後、サーバーはメッセージを送り返し、リストに表示します。新しいメッセージを受信するたびに、新しいリスト項目を作成してリストに追加します。
4. 結論
この記事では、Go で Websocket を使用してリアルタイム通信を行う方法を紹介しました。 Gorilla Websockets ライブラリを使用して Websockets 接続を確立し、接続をテストするための簡単な Web アプリケーションを作成しました。 Websocket は、オンライン チャット ルーム、リアルタイム データ監視およびダッシュボードなど、多くのリアルタイム アプリケーションを実装するために使用できる強力なテクノロジです。この記事がお役に立てば幸いです。
以上がGo で Websocket を使用してリアルタイム通信を行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。