[go] Go 언어로 웹소켓 기능을 활용한 실시간 주식 시세 애플리케이션 만들기
이번에 우리는 Go 언어와 웹소켓을 사용하여 실시간 주식 시세 애플리케이션을 만들어 볼 것입니다. 웹소켓은 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜이며, 주식 시세와 같은 실시간 데이터를 전달하기에 적합합니다.
프로젝트 설정
먼저, Go 언어로 웹소켓을 사용할 수 있는 라이브러리를 설치해야 합니다. Go 언어의 경우, gorilla/websocket
패키지를 이용하면 간단하게 웹소켓을 구현할 수 있습니다. 패키지 설치는 다음과 같이 해줍니다.
go get github.com/gorilla/websocket
웹소켓 서버 구현
다음으로, 웹소켓 서버를 구현해보겠습니다. 아래는 간단한 예제 코드입니다.
package main
import (
"github.com/gorilla/websocket"
"net/http"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, _ := upgrader.Upgrade(w, r, nil)
defer conn.Close()
for {
// 클라이언트로부터 데이터를 읽음
messageType, p, err := conn.ReadMessage()
if err != nil {
return
}
// 데이터 처리
err = conn.WriteMessage(messageType, p)
if err != nil {
return
}
}
}
func main() {
http.HandleFunc("/ws", wsHandler)
http.ListenAndServe(":8080", nil)
}
위의 코드는 /ws
엔드포인트로 웹소켓 연결을 받고, 클라이언트로부터 메시지를 읽어들여 다시 전송하는 기본적인 웹소켓 서버를 구현한 것입니다.
클라이언트 측 구현
웹소켓 서버를 구현했다면, 클라이언트 측에서도 웹소켓 연결을 설정하고 데이터를 주고받을 수 있어야 합니다. HTML과 JavaScript를 사용하여 간단한 클라이언트를 구현해봅시다.
<!DOCTYPE html>
<html>
<head>
<title>실시간 주식 시세</title>
<script>
var socket = new WebSocket("ws://localhost:8080/ws");
// 소켓 열릴 때 이벤트 처리
socket.onopen = function(event) {
console.log("웹소켓이 열렸습니다.");
};
// 메시지 수신시 이벤트 처리
socket.onmessage = function(event) {
var data = event.data;
console.log("받은 메시지: " + data);
};
</script>
</head>
<body>
<h1>실시간 주식 시세</h1>
</body>
</html>
위의 HTML은 웹소켓을 통해 서버와 통신할 수 있는 간단한 클라이언트를 구현한 것입니다.
마치며
이렇게하면 Go 언어를 이용하여 실시간 주식 시세와 같은 실시간 데이터를 처리하는 애플리케이션을 구현할 수 있습니다. Go 언어의 간결한 문법과 함께 높은 성능을 바탕으로, 웹소켓을 통한 실시간 통신 기능을 사용하여 다양한 실시간 애플리케이션을 만들 수 있습니다.