[go] 웹 소켓 통신
웹 소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 클라이언트와 서버 간에 데이터를 주고받을 수 있습니다. Go 언어로 웹 소켓 통신을 구현하려면 gorilla/websocket
패키지를 사용할 수 있습니다.
패키지 설치
먼저, gorilla/websocket
패키지를 설치합니다.
go get github.com/gorilla/websocket
서버 구현
다음은 Go를 사용하여 웹 소켓 서버를 구현하는 예시 코드입니다.
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func handleWebSocket(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("웹 소켓 연결 설정 오류:", err)
return
}
defer conn.Close()
for {
messageType, message, err := conn.ReadMessage()
if err != nil {
log.Println("메시지 수신 오류:", err)
return
}
log.Printf("받은 메시지: %s\n", message)
err = conn.WriteMessage(messageType, message)
if err != nil {
log.Println("메시지 송신 오류:", err)
return
}
}
}
func main() {
http.HandleFunc("/ws", handleWebSocket)
http.ListenAndServe(":8080", nil)
}
위의 코드에서 handleWebSocket
함수는 웹 소켓 연결을 처리하며, 메시지를 수신하고 다시 보내는 예제를 포함하고 있습니다.
클라이언트 구현
다음은 HTML과 JavaScript를 사용하여 간단한 웹 소켓 클라이언트를 구현하는 예시 코드입니다.
<!DOCTYPE html>
<html>
<head>
<title>웹 소켓 클라이언트</title>
</head>
<body>
<input type="text" id="messageInput">
<button onclick="sendMessage()">전송</button>
<script>
const socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = (event) => {
console.log("웹 소켓 연결 성공");
};
socket.onmessage = (event) => {
console.log("받은 메시지: " + event.data);
};
function sendMessage() {
const message = document.getElementById("messageInput").value;
socket.send(message);
}
</script>
</body>
</html>
위의 코드는 웹 소켓을 이용하여 서버에 메시지를 전송하고 받는 간단한 클라이언트를 구현한 것입니다.
이제 Go 언어를 사용하여 웹 소켓 통신을 구현하는 방법에 대해 간단히 알아보았습니다. 참고 문헌에 자세한 내용이 있으니 참고하시기 바랍니다!