golang WebSocket と JSON の組み合わせ: データ送信と解析の実現
現代の Web 開発では、リアルタイムのデータ送信がますます重要になっています。 WebSocket は双方向通信を実現するために使用されるプロトコルで、従来の HTTP リクエスト/レスポンス モデルとは異なり、WebSocket を使用すると、サーバーがクライアントにデータをアクティブにプッシュできます。 JSON (JavaScript Object Notation) は、簡潔で読みやすく、異なるプログラミング言語間で解析しやすいデータ交換用の軽量形式です。
この記事では、Golang を使用して WebSocket と JSON を組み合わせ、データの送信と解析を実現する方法を紹介します。 Golang の組み込みパッケージ net/http
と github.com/gorilla/websocket
を使用して WebSocket 接続を処理し、encoding/json
を使用して解析と生成を行います。 JSONデータ。
まず、gorilla/websocket
パッケージをインストールする必要があります。次のコマンドを使用してインストールできます:
go get github.com/gorilla/websocket
次に、コードの記述を開始できます。
package main import ( "encoding/json" "fmt" "log" "net/http" "github.com/gorilla/websocket" ) type Message struct { Content string `json:"content"` } var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func echoHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() for { // 读取客户端发送的消息 _, message, err := conn.ReadMessage() if err != nil { log.Println(err) break } // 解析JSON数据 var msg Message err = json.Unmarshal(message, &msg) if err != nil { log.Println(err) break } // 输出收到的消息 fmt.Println("收到消息:", msg.Content) // 发送响应消息 response := Message{ Content: "你发送的消息是:" + msg.Content, } // 将响应转换为JSON格式 jsonResponse, err := json.Marshal(response) if err != nil { log.Println(err) break } // 发送JSON响应 err = conn.WriteMessage(websocket.TextMessage, jsonResponse) if err != nil { log.Println(err) break } } } func main() { http.HandleFunc("/ws", echoHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }
上記のコードには、クライアントの WebSocket 接続を受信し、メッセージの送受信を処理する WebSocket 処理関数 echoHandler
が含まれています。関数内では、まずクライアントから送信されたメッセージを読み取り、それを Message
構造に解析します。次に、受信したメッセージを出力し、応答メッセージを生成し、応答を JSON 形式に変換します。最後に、conn.WriteMessage
を使用して JSON 応答をクライアントに送信します。
main 関数では、WebSocket 処理関数 echoHandler
を /ws
ルートに登録し、ローカル 8080 ポートをリッスンします。
プログラムをコンパイルして実行した後、ブラウザで WebSocket 接続を開くと、JavaScript の WebSocket オブジェクトを通じて JSON データを送受信できるようになります。以下は簡単な JavaScript コードの例です。
var socket = new WebSocket("ws://localhost:8080/ws"); socket.onopen = function () { console.log('连接已打开'); var message = { content: 'Hello Server!' }; socket.send(JSON.stringify(message)); }; socket.onmessage = function (event) { console.log('收到服务器的响应:', JSON.parse(event.data)); socket.close(); }; socket.onclose = function () { console.log('连接已关闭'); };
上記の JavaScript コードでは、WebSocket 接続を作成し、接続が開かれたときにメッセージの内容を含む JSON データを送信します。サーバーからの応答を受信すると、応答メッセージを解析して出力し、WebSocket 接続を閉じます。
上記は、Golang を使用して WebSocket と JSON を組み合わせ、データ送信と解析を実現するサンプル コードです。 WebSocket と JSON を使用すると、クライアントとサーバー間で構造化データを簡単に転送および解析でき、リアルタイムのデータ対話が可能になります。特定のユースケースで機能するコードを作成するときは、必要なエラー処理とデータ検証を忘れずに含めてください。この記事がお役に立てば幸いです!
以上がgolang WebSocketとJSONの組み合わせ:データ送信と解析を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。