>  기사  >  백엔드 개발  >  Golang에서 WebSocket 연결을 올바르게 닫는 방법

Golang에서 WebSocket 연결을 올바르게 닫는 방법

PHPz
PHPz원래의
2023-04-05 13:47:161533검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.