ホームページ > バックエンド開発 > Golang > golang WebSocket チュートリアル: リアルタイム通信を実現する方法

golang WebSocket チュートリアル: リアルタイム通信を実現する方法

王林
リリース: 2023-12-17 13:54:36
オリジナル
1338 人が閲覧しました

golang WebSocket教程:如何实现实时通信

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート