ホームページ  >  記事  >  バックエンド開発  >  WebSocket 通信に Go と http.Transport を使用するにはどうすればよいですか?

WebSocket 通信に Go と http.Transport を使用するにはどうすればよいですか?

王林
王林オリジナル
2023-07-21 18:49:14829ブラウズ

WebSocket 通信に Go と http.Transport を使用するにはどうすればよいですか?

WebSocket は、ネットワーク アプリケーションで双方向通信を提供するプロトコルです。これにより、クライアントが最初にリクエストを開始する必要がなく、サーバーがアクティブにメッセージをクライアントにプッシュできるようになります。 Go 言語では、http.Transport を使用して WebSocket 接続を作成および管理できます。

以下は、Go と http.Transport を使用した WebSocket 通信のサンプル コードです。

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func EchoServer(ws *websocket.Conn) {
    for {
        var message string
        err := websocket.Message.Receive(ws, &message)
        if err != nil {
            log.Println("receive failed:", err)
            break
        }
        log.Println("received:", message)

        err = websocket.Message.Send(ws, message)
        if err != nil {
            log.Println("send failed:", err)
            break
        }
        log.Println("sent:", message)
    }
}

func main() {
    http.Handle("/", websocket.Handler(EchoServer))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

上記のコードは、受信したメッセージをそのままクライアントに送り返す WebSocket サーバーを作成します。 main 関数では、http.Handle と websocket.Handler を使用して、EchoServer 関数をプロセッサとして登録します。次に、http.ListenAndServe を使用して、ポート 8080 でリッスンするサーバーを起動します。

クライアント側では、http.Transport を使用して WebSocket 接続を作成し、Send メソッドと Receive メソッドを通じてデータを送受信できます。以下は、単純なクライアント サンプル コードです。

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func main() {
    origin := "http://localhost/"
    url := "ws://localhost:8080/"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        log.Fatal("dial failed:", err)
    }

    message := "Hello, WebSocket!"
    err = websocket.Message.Send(ws, message)
    if err != nil {
        log.Fatal("send failed:", err)
    }

    var response string
    err = websocket.Message.Receive(ws, &response)
    if err != nil {
        log.Fatal("receive failed:", err)
    }

    fmt.Println("received:", response)
}

上記のコードでは、websocket.Dial を使用して WebSocket 接続を作成します。次に、websocket.Message.Send メソッドを使用してメッセージを送信し、websocket.Message.Receive を使用してサーバーから返されたメッセージを受信します。

上記のコード例では、Go と http.Transport を使用して WebSocket 接続を簡単に作成および管理できます。 WebSocket は、アプリケーションに効率的でリアルタイムの双方向通信機能を提供し、さまざまなアプリケーション シナリオに適しています。この記事がお役に立てば幸いです!

以上がWebSocket 通信に Go と http.Transport を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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