golang を使用して WebSocket サーバーを作成する方法
WebSocket は、クライアントとサーバー間の双方向通信を可能にするプロトコルです。これにより、永続的な接続を通じてクライアントとサーバーの間でデータを転送できるようになります。この記事では、golang を使用して簡単な WebSocket サーバーを作成する方法と具体的なコード例を紹介します。
net/http
と github.com/gorilla/websocket
をインポートする必要があります。 net/http
は HTTP サーバーの作成に使用され、gorilla/websocket
は WebSocket 接続の処理に使用されます。 import ( "net/http" "github.com/gorilla/websocket" )
http.HandleFunc()
関数を使用して WebSocket 接続リクエストを処理し、websocket.Upgrade() を使用します。
関数は、HTTP プロトコルを WebSocket プロトコルにアップグレードします。 func wsHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("Upgrade error:", err) return } // 在这里处理WebSocket连接 }
wsHandler()
関数では、Upgrader
オブジェクトを作成し、CheckOrigin
属性を匿名関数に設定しました。すべてのクロスドメイン要求を受け入れる場合は true を返します。
次に、Upgrade()
関数を使用して、HTTP プロトコルを WebSocket プロトコルにアップグレードします。アップグレードが失敗した場合は、エラー メッセージが出力されて返されます。アップグレードが成功すると、conn
オブジェクトを使用して WebSocket 接続を処理できます。
conn
オブジェクトを使用して読み取りおよび書き込み操作を実行できます。簡単な処理例を次に示します。 for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Read error:", err) break } log.Println("received message:", string(message)) err = conn.WriteMessage(messageType, message) if err != nil { log.Println("Write error:", err) break } }
上の例では、ReadMessage()
関数を使用してクライアントから送信されたメッセージを読み取り、WriteMessage ( )
関数はメッセージをクライアントに返します。読み取りまたは書き込み中にエラーが発生した場合は、エラー メッセージを出力し、ループから抜け出します。
http.HandleFunc()
関数を使用して、wsHandler()
関数をハンドラーとして登録します。 WebSocket 接続を処理し、http.ListenAndServe()
関数を使用して、指定されたポートで WebSocket サーバーを起動します。 func main() { http.HandleFunc("/ws", wsHandler) log.Println("WebSocket server started.") err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal("ListenAndServe error:", err) } }
上の例では、wsHandler()
関数を「/ws」パスのハンドラーとして登録しました。必要に応じてパスをカスタマイズできます。
概要
この記事では、golang を使用して単純な WebSocket サーバーを作成する方法を紹介し、具体的なコード例を示します。 golang を使用して WebSocket サーバーを作成するのは非常に簡単で、簡単に双方向通信を実現できます。この記事が WebSocket の理解と使用に役立つことを願っています。
以上がgolangを使用してWebSocketサーバーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。