[go] Go 언어를 사용한 고성능 웹 서버의 WebSocket 지원
웹 소켓은 실시간 통신을 지원하는 표준 프로토콜로, 클라이언트와 서버 간 양방향 통신이 가능합니다. Go 언어를 사용하여 고성능 웹 서버를 구축하고 WebSocket을 지원하는 방법을 살펴보겠습니다.
웹 서버 설정
먼저, Go의 내장 HTTP 패키지를 사용하여 웹 서버를 설정합니다.
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
// 웹 소켓 핸들러 로직
})
http.ListenAndServe(":8080", nil)
}
위의 코드에서 /ws
경로에 대한 핸들러로 웹 소켓 연결을 처리할 수 있습니다.
웹 소켓 핸들러 구현
웹 소켓 핸들러는 클라이언트의 연결을 수락하고, 메시지를 수신하거나 전송하는 로직을 포함합니다.
package main
import (
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func main() {
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
// 에러 처리
return
}
defer conn.Close()
for {
messageType, p, err := conn.ReadMessage()
if err != nil {
// 에러 처리
return
}
if err := conn.WriteMessage(messageType, p); err != nil {
// 에러 처리
return
}
}
})
http.ListenAndServe(":8080", nil)
}
위의 예제는 github.com/gorilla/websocket
패키지를 사용하여 웹 소켓을 다루는 방법을 보여줍니다.
마치며
Go 언어를 사용하여 웹 소켓을 지원하는 고성능 웹 서버를 구축하는 방법에 대해 알아보았습니다. Go의 강력한 표준 라이브러리와 서드파티 패키지를 통해 웹 소켓을 쉽게 지원할 수 있습니다.
더 많은 정보는 Go 공식 문서를 참고하세요.