본문 바로가기

프로그래밍/golang

주니어 개발자의 go랭 서버 개발일지 -2 웹소켓 생성 및 읽고 쓰기

websocket은 서버와 클라이언트 간에 Socket Connection을 유지해서 양방향 통신이 가능하게 하는 기술입니다.

* websocket에 대해서 잘 설명해놓은 다른 글들이 많으니 자세히 설명하지는 않겠습니다.

 

1. go lang 으로 웹소켓 구현하기! 

* websocket 은 gorilla web toolkit에 있는 websocket을 사용 하였습니다.

 

기본적인 웹소켓 연결

package main

import 	"github.com/gorilla/websocket"


var upgrader = websocket.Upgrader{
	ReadBufferSize:  256,
	WriteBufferSize: 256,
}

func main(){
conn, err := upgrader.Upgrade(w, r, nil)
	defer conn.Close()
	if err != nil {
		log.Printf("upgrader.Upgrade: %v", err)
		return
	}
}

웹소켓에서 클라이언트로부터 메시지 받기

messageType은 websocket.BinaryMessage 또는 websocket.TextMessage 의 값을 가지고 있는 int 값이고

실질적인 메시지는 p라는 변수에 []byte의 형태로 저장된다.

messageType, p, err := conn.ReadMessage()
		if err != nil {
			log.Printf("conn.ReadMessage: %v", err)
			return
		}

전달된 메시지를 받아 보려면 []byte -> string으로 자료형을 변경하면 된다.

fmt.Println(string(p))

클라이언트에게 메시지 전달하기

err := conn.WriteMessage(messageType, '메시지') //[]byte 타입의 메시지를 전달해야한다.
		if err != nil {
			log.Println(err)
		}