インターネットの継続的な発展に伴い、Web アプリケーションに対する需要はますます高まっています。その後、リアルタイム通信の必要性が高まり、Websocket が登場しました。 Gin は Golang をベースとした効率的な Web フレームワークであり、Websocket 通信機能を簡単に実装できます。
この記事では、Gin フレームワークを使用して Websocket 通信機能を実装する方法を紹介します。
Gin フレームワークの使用を開始する前に、まず Jin フレームワークをインストールする必要があります。次のコマンドでインストールできます。
go get -u github.com/gin-gonic/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 通信機能を実装します。 websocket.go
ファイルを作成し、次の手順に従ってそれを実装します。
開始する前に、次の依存関係をインポートする必要があります。
import ( "log" "net/http" "github.com/gorilla/websocket" "github.com/gin-gonic/gin" )
ここでは、Gin フレームワーク、Gorilla Websocket ライブラリ、Go 標準ライブラリの log と net/http をインポートしました。
Gin フレームワークを通じて Websocket ルートを定義します。
router.GET("/ws", func(c *gin.Context) { wsHandler(c.Writer, c.Request) })
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 メソッドを使用して応答を書き込みます。メッセージがクライアントに返されます。
ページを開きます
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("连接已关闭!"); };
以上がJinフレームワークを利用してWebSocket通信機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。