Golang WebSocket チュートリアル: リアルタイム通信を実現する方法
まず、WebSocket とは何かを紹介します。 WebSocket は、Web ブラウザとサーバー間の全二重通信のためのプロトコルです。 HTTP プロトコルとは異なり、WebSocket を使用すると、サーバーはクライアントにデータをプッシュでき、リアルタイム通信、イベント駆動型、その他の機能を実装できます。
このチュートリアルでは、Golang を使用して単純な WebSocket サーバーを実装します。 WebSocket 接続を確立し、メッセージを送受信する方法を、具体的なコード例を使用して説明します。
まず、Golang の WebSocket パッケージをインポートする必要があります:
import ( "log" "net/http" "github.com/gorilla/websocket" )
次に、HTTP プロトコルを WebSocket プロトコルにアップグレードするために WebSocket アップグレード (アップグレーダー) を定義する必要があります:
var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, }
次に、WebSocket 接続を処理する関数を定義する必要があります。この関数は HTTP ハンドラーとして登録され、WebSocket 接続リクエストがあるたびに呼び出されます:
func handleWebSocket(w http.ResponseWriter, r *http.Request) { // 将HTTP连接升级为WebSocket连接 conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } // 在新的goroutine中处理WebSocket连接 go handleWebSocketConnection(conn) }
WebSocket 接続を処理する関数では、メッセージの送受信を処理するループを定義する必要があります。 :
func handleWebSocketConnection(conn *websocket.Conn) { for { // 读取客户端发送的消息 _, msg, err := conn.ReadMessage() if err != nil { log.Println(err) return } // 打印接收到的消息 log.Println("Received message:", string(msg)) // 发送消息给客户端 err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, client!")) if err != nil { log.Println(err) return } } }
あとは、上記の関数を HTTP プロセッサとして登録し、HTTP サーバーを起動するだけです:
func main() { // 注册WebSocket处理器 http.HandleFunc("/ws", handleWebSocket) // 启动HTTP服务器 log.Println("WebSocket server started on localhost:8080") err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err) } }
この時点で、単純な WebSocket サーバーが完成しました。クライアントが WebSocket 経由でサーバーに接続すると、サーバーはクライアントから送信されたメッセージを受信し、固定メッセージで応答します。
サーバーをテストするには、「Simple WebSocket Client」などのブラウザー プラグインを使用し、サーバー アドレス ws://localhost:8080/ws を入力して接続します。プラグインのメッセージボックスにメッセージを入力して送信すると、受信したメッセージをターミナルで確認すると同時にクライアントにメッセージを返信することができます。
上記は、Golang を使用して WebSocket を実装するための基本的なチュートリアルです。 WebSocket は、リアルタイム通信、イベント駆動型などで大きな可能性を秘めており、チャット アプリケーション、リアルタイム データの視覚化などのシナリオで使用できます。このチュートリアルを通じて、WebSocket を理解して使用するための助けになれば幸いです。
以上がgolang WebSocket チュートリアル: リアルタイム通信を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。