[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 공식 문서를 참고하세요.