Golang の WebSocket は、リアルタイムで通信する方法を提供する強力なネットワーク プログラミング ツールです。 WebSocket を使用して通信する場合、WebSocket 接続を閉じる必要がある状況が発生することがあります。では、Golang で WebSocket 接続を正しく閉じるにはどうすればよいでしょうか?この記事では詳しく紹介していきます。
Golang では、標準ライブラリの net/http および github.com/gorilla/websocket ライブラリを使用して、WebSocket 接続を実装できます。どちらの場合も、WebSocket 接続を閉じるためのメソッドがあります。
標準ライブラリで WebSocket 接続を閉じる
標準ライブラリでは、WebSocket の close メソッドを使用して接続を閉じることができます。 close メッセージを受信したら、WebSocket の close メソッドを呼び出して接続を閉じることができます。コード例は次のとおりです。
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 }
上記の例では、標準ライブラリの WebSocket パッケージを使用して WebSocket 接続を作成し、読み取りと実行の後に defer キーワードを介して conn.Close() メソッドを呼び出しました。書き込みロジックが完了し、接続が閉じられました。
ゴリラ/WebSocket ライブラリで WebSocket 接続を閉じる
ゴリラ/WebSocket ライブラリでは、WebSocket の Close メソッドを呼び出して接続を閉じることができます。コード例は次のとおりです。 ##
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 // 关闭 WebSocket 连接 conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) }
以上がGolang で WebSocket 接続を適切に閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。