WebSocket 기술이 널리 적용됨에 따라 점점 더 많은 프로그래머가 Go 언어를 사용하여 WebSocket 기능을 구현하기 시작했습니다. WebSocket 기능을 구현하는 과정에서 프로그래머는 Go 언어 코드에서 WebSocket 연결을 올바르게 닫는 방법이라는 중요한 문제에 직면하는 경우가 많습니다. 이 문서에서는 Go에서 WebSocket 연결을 올바르게 닫는 방법을 설명합니다.
WebSocket 연결을 닫는 방법에는 두 가지가 있습니다.
Go 언어에서는 WebSocket 연결의 Close() 메서드를 호출하여 WebSocket 연결을 닫을 수 있습니다. WebSocket 연결을 적극적으로 닫으려면 클라이언트 또는 서버 측에서 이 메서드를 호출하면 됩니다. WebSocket 연결을 수동적으로 닫으려면 서버 측에서 읽기 및 쓰기 작업을 감지할 수 있습니다. 연결 예외가 감지되면 Close() 메서드를 호출하여 WebSocket 연결을 닫습니다.
다음은 Go에서 WebSocket 연결을 닫는 샘플 코드입니다.
func handleWebSocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("upgrade:", err) return } defer conn.Close() Loop: for { messageType, message, err := conn.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { log.Printf("error: %v", err) } break Loop } // handle message } }
위 코드에서는 Gorilla WebSocket에서 제공하는 Upgrade() 메서드를 사용하여 HTTP 연결을 WebSocket 연결로 업그레이드합니다. WebSocket 연결을 처리할 때 루프를 사용하여 WebSocket 메시지를 읽고 연결 예외가 감지되면 Close() 메서드를 호출하여 WebSocket 연결을 닫습니다.
WebSocket 연결을 닫을 때 리소스 누출을 방지해야 한다는 점에 유의해야 합니다. 위 코드에서는 함수를 종료할 때 defer를 사용하여 WebSocket 연결을 닫습니다. 이렇게 하면 함수 처리 중에 예외가 발생하더라도 리소스 누출을 방지하기 위해 WebSocket 연결이 제때 닫힙니다.
이 글의 서문을 통해 독자들은 Go에서 WebSocket 연결을 올바르게 닫는 방법을 어느 정도 이해했다고 믿습니다. 실제 개발 프로세스에서는 특정 애플리케이션 시나리오에 따라 WebSocket 연결을 닫는 방법을 선택해야 합니다. Active Closing이든 Passive Closing이든 WebSocket 연결을 닫을 때 리소스 누수를 방지하고 프로그램의 안정적인 작동을 보장해야 합니다.
위 내용은 Go에서 WebSocket 연결을 올바르게 닫는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!