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

Susan Sarandon
풀어 주다: 2024-11-04 12:02:02
원래의
149명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!