[go] Go 언어에서 웹소켓으로 데이터 전송하는 방법

웹소켓은 실시간 양방향 통신을 제공하는 프로토콜로, Go 언어에서도 쉽게 구현할 수 있습니다. 이번 포스트에서는 Go 언어를 사용하여 웹소켓을 통해 데이터를 전송하는 방법에 대해 알아보겠습니다.

1. gorilla/websocket 라이브러리 설치

먼저, 웹소켓을 구현하기 위해 gorilla/websocket 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 라이브러리를 설치하세요.

go get github.com/gorilla/websocket

2. 웹소켓 서버 구현

다음으로, 웹소켓을 통해 데이터를 전송하는 서버를 구현해보겠습니다.

package main

import (
	"github.com/gorilla/websocket"
	"net/http"
)

var upgrader = websocket.Upgrader{
	CheckOrigin: func(r *http.Request) bool {
		return true
	},
}

func main() {
	http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
		conn, _ := upgrader.Upgrade(w, r, nil)
		defer conn.Close()

		for {
			messageType, p, _ := conn.ReadMessage()
			conn.WriteMessage(messageType, p)
		}
	})

	http.ListenAndServe(":8080", nil)
}

위 코드에서는 gorilla/websocket 라이브러리를 사용하여 간단한 웹소켓 서버를 구현했습니다.

3. 웹소켓 클라이언트 구현

이제 클라이언트 측에서 웹소켓을 통해 데이터를 전송하는 방법을 알아봅시다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebSocket Example</title>
</head>
<body>
    <script>
        const ws = new WebSocket('ws://localhost:8080/ws');

        ws.onopen = function(event) {
            ws.send('Hello, WebSocket Server!');
        }

        ws.onmessage = function(event) {
            console.log('Received message: ' + event.data);
        }
    </script>
</body>
</html>

위의 HTML 코드는 웹소켓 클라이언트를 구현한 것으로, 서버에 연결하고 메시지를 전송한 뒤 서버로부터 메시지를 수신하는 기능을 갖고 있습니다.

이렇게 간단히 Go 언어를 사용하여 웹소켓을 통해 데이터를 전송할 수 있습니다. 특히 gorilla/websocket 라이브러리를 사용하면 간편하게 웹소켓을 구현할 수 있습니다.

참고 문헌: