ホームページ > バックエンド開発 > Golang > Jinフレームワークを利用してWebSocket通信機能を実装する

Jinフレームワークを利用してWebSocket通信機能を実装する

王林
リリース: 2023-06-23 09:34:37
オリジナル
2914 人が閲覧しました

インターネットの継続的な発展に伴い、Web アプリケーションに対する需要はますます高まっています。その後、リアルタイム通信の必要性が高まり、Websocket が登場しました。 Gin は Golang をベースとした効率的な Web フレームワークであり、Websocket 通信機能を簡単に実装できます。

この記事では、Gin フレームワークを使用して Websocket 通信機能を実装する方法を紹介します。

Gin フレームワークをインストールする

Gin フレームワークの使用を開始する前に、まず Jin フレームワークをインストールする必要があります。次のコマンドでインストールできます。

go get -u github.com/gin-gonic/gin
ログイン後にコピー

Gin アプリケーションの作成

Gin フレームワークをインストールした後、Gin アプリケーションの作成を開始できます。 app.go ファイルを作成し、次のコードに従って実装します。

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    router.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })

    router.Run(":8080")
}
ログイン後にコピー

上記のコードは、Gin アプリケーションを作成します。リスニング ポートは 8080 で、http:/ にアクセスします。 / ブラウザでは localhost:8080/ping が JSON 応答を返します。

Gin フレームワークを使用して Websocket を実装する

次に、Gin フレームワークを使用して Websocket 通信機能を実装します。 websocket.go ファイルを作成し、次の手順に従ってそれを実装します。

依存関係のインポート

開始する前に、次の依存関係をインポートする必要があります。

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
    "github.com/gin-gonic/gin"
)
ログイン後にコピー

ここでは、Gin フレームワーク、Gorilla Websocket ライブラリ、Go 標準ライブラリの log と net/http をインポートしました。

Gin ルーティングの定義

Gin フレームワークを通じて Websocket ルートを定義します。

router.GET("/ws", func(c *gin.Context) {
    wsHandler(c.Writer, c.Request)
})
ログイン後にコピー

Websocket 処理関数の定義

wsHandler# を定義します。 ## Websocket 接続の処理に使用される関数:

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
    CheckOrigin: func(r *http.Request) bool {
        return true
    },
}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }

    defer conn.Close()

    for {
        // 读取消息
        _, msg, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }

        // 处理消息
        log.Printf("收到消息: %s
", msg)

        // 回复消息
        err = conn.WriteMessage(websocket.TextMessage, []byte("已收到消息!"))
        if err != nil {
            log.Println(err)
            return
        }
    }
}
ログイン後にコピー

上記の関数は、

websocket.Upgrader メソッドを呼び出して HTTP 接続を Websocket 接続にアップグレードし、ウェブソケット接続。コードでは、まず upgrader.Upgrade メソッドを使用して、HTTP 接続を Websocket 接続にアップグレードします。次に、無限ループで、conn.ReadMessage メソッドを使用してクライアントのメッセージ データを読み取り、読み取ったメッセージを出力し、conn.WriteMessage メソッドを使用して応答を書き込みます。メッセージがクライアントに返されます。

Websocket の読み取りおよび書き込み操作はブロック プロセスであるため、無限ループで実行する必要があります。クライアントが Websocket から切断されると、ループは終了します。

Websocket 接続のテスト

上記のコードを作成した後、次の手順で Websocket 接続をテストできます:

    Gin アプリケーションを開始します:
  1. go run app.go
  2. ブラウザで
  3. http://localhost:8080/ws ページを開きます
  4. ブラウザの開発者ツールを開き、次のコマンドを実行しますコンソール コード:
  5. var websocket = new WebSocket("ws://localhost:8080/ws");
    
    websocket.onopen = function(evt) {
        console.log("连接成功!");
        websocket.send("Hello WebSocket!");
    };
    
    websocket.onmessage = function(evt) {
        console.log("收到消息:" + evt.data);
    };
    
    websocket.onclose = function(evt) {
        console.log("连接已关闭!");
    };
    ログイン後にコピー
    上記のコードでは、WebSocket API を使用して WebSocket との接続を確立し、メッセージを送信します。 Websocket への接続が成功すると、コンソールに「Connection success!」が出力され、Websocket からの応答メッセージを受信すると、コンソールに「メッセージを受信しました: メッセージを受信しました!」と出力され、接続が閉じられると、コントロールはステーションは「接続が閉じられました!」と出力します。

    まとめ

    以上の手順により、Gin フレームワークを使用した Websocket 通信機能を実装することができました。 Gin フレームワークは、Web 開発を簡単に実行できる豊富な API を提供します。 Websocket はリアルタイム通信を実現するための重要な仕組みであり、Gin フレームワークと Websocket を組み合わせることで、リアルタイム通信機能を備えた Web アプリケーションをより便利かつ迅速に開発できます。

    以上がJinフレームワークを利用してWebSocket通信機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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