golang WebSocket과 JSON의 결합: 데이터 전송 및 구문 분석 실현
현대 웹 개발에서는 실시간 데이터 전송이 점점 더 중요해지고 있습니다. WebSocket은 양방향 통신을 달성하는 데 사용되는 프로토콜입니다. 기존 HTTP 요청-응답 모델과 달리 WebSocket을 사용하면 서버가 클라이언트에 데이터를 적극적으로 푸시할 수 있습니다. JSON(JavaScript Object Notation)은 간결하고 읽기 쉽고 다양한 프로그래밍 언어 간 구문 분석이 쉬운 데이터 교환을 위한 경량 형식입니다.
이 기사에서는 Golang을 사용하여 WebSocket과 JSON을 결합하여 데이터 전송 및 구문 분석을 수행하는 방법을 소개합니다. Golang의 내장 패키지 net/http
및 github.com/gorilla/websocket
를 사용하여 WebSocket 연결을 처리하고 encoding/json
을 사용하여 JSON 데이터를 구문 분석하고 생성합니다. 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处理函数echoHandler
,它接收客户端的WebSocket连接并处理消息的收发。在函数内部,我们首先读取客户端发送的消息,并解析为Message
结构体。然后,我们输出收到的消息,生成响应消息,并将响应转换为JSON格式。最后,我们使用conn.WriteMessage
将JSON响应发送给客户端。
在主函数中,我们将WebSocket处理函数echoHandler
注册到/ws
gorilla/websocket
패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다: 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('连接已关闭'); };다음으로 코드 작성을 시작할 수 있습니다.
rrreee
위 코드에는 클라이언트의 WebSocket 연결을 수신하고 메시지 송수신을 처리하는 WebSocket 처리 함수echoHandler
가 포함되어 있습니다. 함수 내에서 먼저 클라이언트가 보낸 메시지를 읽고 Message
구조로 구문 분석합니다. 그런 다음 수신된 메시지를 출력하고, 응답 메시지를 생성하고, 응답을 JSON 형식으로 변환합니다. 마지막으로 conn.WriteMessage
를 사용하여 JSON 응답을 클라이언트에 보냅니다. 메인 함수에서는 WebSocket 처리 함수 echoHandler
를 /ws
경로에 등록하고 로컬 8080 포트를 수신합니다. 🎜🎜프로그램을 컴파일하고 실행한 후 브라우저에서 WebSocket 연결을 열면 JavaScript의 WebSocket 개체를 통해 JSON 데이터를 주고받을 수 있습니다. 다음은 간단한 JavaScript 코드 예입니다. 🎜rrreee🎜 위의 JavaScript 코드에서는 WebSocket 연결을 생성하고 연결이 열릴 때 메시지 내용이 포함된 JSON 데이터를 보냅니다. 서버로부터 응답이 수신되면 응답 메시지를 구문 분석하여 인쇄하고 WebSocket 연결을 닫습니다. 🎜🎜위는 WebSocket 및 JSON과 결합된 Golang을 사용하여 데이터 전송 및 구문 분석을 구현하기 위한 일부 샘플 코드입니다. WebSocket과 JSON을 사용하면 클라이언트와 서버 간에 구조화된 데이터를 쉽게 전송하고 구문 분석하여 실시간 데이터 상호 작용이 가능합니다. 특정 사용 사례에 적합한 코드를 작성할 때 필요한 오류 처리 및 데이터 유효성 검사를 포함하는 것을 기억하세요. 이 기사가 도움이 되기를 바랍니다! 🎜위 내용은 golang WebSocket과 JSON의 결합: 데이터 전송 및 파싱 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!