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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

GO 프로그래밍에서 오류를 효과적으로 관리하는 방법은 다음과 같습니다. 1) 예외 대신 오류 값 사용, 2) 오류 랩핑 기술 사용, 3) 사용자 지정 오류 유형 정의, 4) 성능에 대한 오류 값 재사용, 5) 경고와 함께 공황 및 복구 사용, 6) 오류 처리 전략을 기록하고, 오류 처리, 8) 오류를 사용하여 오류가 발생합니다. 이러한 관행과 패턴은보다 강력하고 유지 관리 가능하며 효율적인 코드를 작성하는 데 도움이됩니다.

GOROONE 및 채널을 사용하여 동시성을 구현할 수 있습니다. 1) Goroutines를 사용하여 예를 들어 음악을 즐기고 친구를 동시에 관찰하는 등의 작업을 병렬로 수행하십시오. 2) 생산자 및 소비자 모델과 같은 채널을 통해 고 루틴간에 데이터를 안전하게 전송합니다. 3) Goroutines와 교착 상태의 과도한 사용을 피하고 동시 프로그램을 최적화하기 위해 시스템을 합리적으로 설계하십시오.

GOOFFERSMULTIPLEAPLEACHELINDINGCURRENTDATDATDATDATRUCTRUCES (MUTEXES, 채널, 및 및 원자가 포함

go'serrorhandlingsexplicit, treatingerrorserSreturnEdValuesratherthanexceptions, 1) Go'sportroachensureserorawarensessbutcanleadtoverbosecode.2) pythonandjavauseexeceptionsforcleanercodebutmiserrors.3) go'smethodoTodoTand

WhentestinggocodewithInitFunctions, useExplicitSetUpFunctionsOrsParateTestOvoiddenceNInItfictionSideffects.1) useExplicitSetUpFunctoControlGlobalVariableInitialization.2) CreateSeparateTesteSpilestobySinitFunctions 및 testesten

go'serrorhandlingreturnserrorsvalues whithuseexceptions와 달리 1) Go'sMethodensuresexpliciterRorhandling, promotingrobustcodebutincreasingverbosity.2) Javaandthon'sexextionslowercodebutcodebutcodebutcanlederforlortorifneterfortorifneteriflerortorifnetrorirederiflofertorifneateRoferfortoriflogertoflortoflerortofneateRofer

AneffectiveInterfaceingoisminimal, Clear, and Promotesloosecoupling.1) Minimizetheinterfaceforflexibilityandeasofimplementation.2) usicfacesforabStractionToswapimementationswhangingCallingCode.3) DesignStabilitySUsingInterfacestomockDep

중앙 집중식 오류 처리는 GO 언어에서 코드의 가독성과 유지 가능성을 향상시킬 수 있습니다. 구현 방법 및 장점에는 다음이 포함됩니다. 1. 비즈니스 로직에서 별도의 오류 처리 로직 및 코드를 단순화합니다. 2. 중앙 처리로 오류 처리의 일관성을 확인하십시오. 3. 연기 및 복구를 사용하여 공황을 포착하고 처리하여 프로그램 견고성을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

드림위버 CS6
시각적 웹 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.