Golang의 WebSocket은 실시간 통신 방법을 제공하는 강력한 네트워크 프로그래밍 도구입니다. WebSocket을 사용하여 통신할 때 WebSocket 연결을 닫아야 하는 상황이 발생할 수 있습니다. 그렇다면 Golang에서 WebSocket 연결을 올바르게 닫는 방법은 무엇입니까? 이번 글에서는 이에 대해 자세히 소개하겠습니다.
Golang에서는 표준 라이브러리의 net/http 및 github.com/gorilla/websocket 라이브러리를 사용하여 WebSocket 연결을 구현할 수 있습니다. 두 경우 모두 WebSocket 연결을 닫는 방법이 있습니다.
표준 라이브러리에서 WebSocket 연결 닫기
표준 라이브러리에서는 WebSocket의 close 메소드를 사용하여 연결을 닫을 수 있습니다. 닫기 메시지를 받은 후 WebSocket의 닫기 메서드를 호출하여 연결을 닫을 수 있습니다. 코드 예시는 다음과 같습니다.
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 }
위 예시에서는 표준 라이브러리의 WebSocket 패키지를 사용하여 WebSocket 연결을 생성했으며, 읽기 및 쓰기 로직이 종료된 후 다음을 통해 conn.Close() 메서드를 호출했습니다. 연결을 닫으려면 키워드를 연기하세요.
gorilla/websocket 라이브러리에서 WebSocket 연결을 닫습니다.
gorilla/websocket 라이브러리에서 WebSocket의 Close 메서드를 호출하여 연결을 닫을 수 있습니다. 코드 예제는 다음과 같습니다.
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 // 关闭 WebSocket 连接 conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) }
위 예제에서 우리는 gorilla/websocket 라이브러리를 사용합니다. WebSocket 연결이 생성되고 읽기 및 쓰기 로직이 끝난 후 conn.WriteMessage 메서드를 호출하여 상대방에게 종료 메시지를 보냅니다. 이렇게 하면 상대방은 종료 메시지를 수신하여 연결을 종료할 수 있습니다.
Summary
표준 라이브러리의 WebSocket 패키지를 사용하든, gorilla/websocket 라이브러리를 사용하든, 해당 메소드를 통해 WebSocket 연결을 종료할 수 있습니다. 실제 개발에서는 실시간 통신 기능을 더 잘 구현하기 위해 실제 상황에 맞는 WebSocket 라이브러리를 선택해야 합니다.
위 내용은 Golang에서 WebSocket 연결을 올바르게 닫는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!