>백엔드 개발 >Golang >Go(Gorilla)에서 특정 클라이언트에 대상 웹소켓 업데이트를 보내는 방법은 무엇입니까?

Go(Gorilla)에서 특정 클라이언트에 대상 웹소켓 업데이트를 보내는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 12:02:02196검색

How to Send Targeted Websocket Updates to Specific Clients in Go (Gorilla)?

Go에서 특정 클라이언트에 Websocket 업데이트 보내기(Gorilla)

Go 초보자임에도 불구하고 웹소켓 통신 구현에 대한 지침을 구합니다. 당신의 자동 완성 프로젝트. Gorilla GitHub 리포지토리의 예제를 활용하려고 시도했지만 특정 클라이언트를 식별하고 웹소켓 업데이트 대상으로 지정하는 방법을 이해하는 데 어려움을 겪었습니다.

클라이언트를 고유하게 식별하려면 다음을 포함하도록 Gorilla 허브와 클라이언트 구조를 수정해야 합니다. ID 필드. 이 필드는 int 또는 string과 같은 유형일 수 있습니다.

Hub 구조 내에서 연결 맵을 이 ID 유형을 키로 사용하고 연결 객체를 값으로 사용하는 맵으로 바꾸세요.

<code class="go">connections map[idType]*connection</code>

또한 메시지 데이터와 대상 클라이언트 ID가 모두 포함된 사용자 정의 메시지 유형을 사용하도록 허브 구조체의 브로드캐스트 필드를 변경합니다.

<code class="go">send chan message</code>

브로드캐스트 메시지 전송을 담당하는 for 루프를 교체합니다. 다음 코드를 사용하여 특정 클라이언트에 메시지를 보냅니다.

<code class="go">for {
    select {
    case client := <-h.register:
        h.clients[client.ID] = client
    case client := <-h.unregister:
        if _, ok := h.clients[client.ID]; ok {
            delete(h.clients, client.ID)
            close(client.send)
        }
    case message := <-h.send:
        if client, ok := h.clients[message.ID]; ok {
            select {
            case client.send <- message.data:
            default:
                close(client.send)
                delete(h.connections, client)
            }
        }
    }
}</code>

특정 클라이언트에 메시지를 보내려면 대상 클라이언트의 ID를 지정하는 메시지를 생성합니다.

<code class="go">hub.send <- message{ID: targetID, data: msg}</code>

이러한 수정 사항을 구현하여, 이제 Go 애플리케이션의 특정 클라이언트에 대상 웹소켓 업데이트를 보낼 수 있습니다.

위 내용은 Go(Gorilla)에서 특정 클라이언트에 대상 웹소켓 업데이트를 보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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