ホームページ >バックエンド開発 >Golang >golangを使用してWebSocketサーバーを作成する方法

golangを使用してWebSocketサーバーを作成する方法

WBOY
WBOYオリジナル
2023-12-17 22:32:22967ブラウズ

golangを使用してWebSocketサーバーを作成する方法

golang を使用して WebSocket サーバーを作成する方法

WebSocket は、クライアントとサーバー間の双方向通信を可能にするプロトコルです。これにより、永続的な接続を通じてクライアントとサーバーの間でデータを転送できるようになります。この記事では、golang を使用して簡単な WebSocket サーバーを作成する方法と具体的なコード例を紹介します。

  1. 準備
    始める前に、golang が正しくインストールされていることを確認する必要があります。公式 Web サイトからインストール パッケージをダウンロードし、指示に従ってインストールできます。
  2. 依存関係のインポート
    2 つの依存関係パッケージ net/httpgithub.com/gorilla/websocket をインポートする必要があります。 net/http は HTTP サーバーの作成に使用され、gorilla/websocket は WebSocket 接続の処理に使用されます。
import (
    "net/http"
    "github.com/gorilla/websocket"
)
  1. 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 接続を処理できます。

  1. WebSocket 接続の処理
    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 ( )関数はメッセージをクライアントに返します。読み取りまたは書き込み中にエラーが発生した場合は、エラー メッセージを出力し、ループから抜け出します。

  1. WebSocket サーバーを開始します
    最後に、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」パスのハンドラーとして登録しました。必要に応じてパスをカスタマイズできます。

  1. クライアント テスト
    WebSocket サーバーの作成が完了したので、WebSocket プロトコルをサポートする任意のクライアントを使用して WebSocket サーバーと通信できるようになります。これは、ブラウザの開発者ツールを使用するか、WebSocket テスト ツールを使用してテストできます。

概要
この記事では、golang を使用して単純な WebSocket サーバーを作成する方法を紹介し、具体的なコード例を示します。 golang を使用して WebSocket サーバーを作成するのは非常に簡単で、簡単に双方向通信を実現できます。この記事が WebSocket の理解と使用に役立つことを願っています。

以上がgolangを使用してWebSocketサーバーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。