Heim > Artikel > Backend-Entwicklung > Wie sende ich mit Gorilla Websocket-Nachrichten an bestimmte Clients in Go?
Bei der Arbeit mit Websockets in Go mit Gorilla kann das Senden von Updates an einzelne Clients eine komplexe Aufgabe sein. In diesem Artikel wird detailliert beschrieben, wie Sie dies effektiv erreichen können.
Das Ziel besteht darin, eine Websocket-Verbindung zwischen einem Client und einem Server herzustellen. Der Server sollte Eingaben vom Client abrufen, Daten aus einem Index über einen Go-Kanal abrufen und dann die indizierten Daten zurück in den Socket für den jeweiligen Client schreiben. Die Herausforderung besteht darin, den Client im Servercode eindeutig zu identifizieren.
Der bereitgestellte Code in hub.go verwaltet Clientverbindungen und enthält eine Verbindungszuordnung, die ursprünglich für jeden einen booleschen Wert speicherte Kunde. Um Nachrichten an einen bestimmten Client zu senden, kann diese Karte geändert werden, um stattdessen eine Verbindungsstruktur zu speichern.
<code class="go">// hub.go // ... Existing code ... type Hub struct { // Registered clients. clients map[*Client]bool // Inbound messages from the clients. broadcast chan []byte // Register requests from the clients. register chan *Client // Unregister requests from clients. unregister chan *Client connections map[string]*connection } // ... Existing code ...</code>
In client.go kann das Verbindungsfeld geändert werden, um die eindeutige ID des Clients zu speichern.
<code class="go">// client.go // ... Existing code ... type Client struct { // unique ID for each client ID string // Hub object hub *Hub // The websocket connection. conn *websocket.Conn // Buffered channel of outbound messages. send chan []byte } // ... Existing code ...</code>
Um Nachrichten an einen bestimmten Client zu senden, muss der Hub-Code so geändert werden, dass er einen Sendekanal enthält, der Nachrichten akzeptiert, die die Nachrichtendaten und die ID des Ziels enthalten Client.
<code class="go">// hub.go // ... Existing code ... type Hub struct { // ... Existing fields ... // Send channel for specific clients. send chan message } // ... Existing code ...</code>
Nachrichten können jetzt über den Sendekanal des Hubs an bestimmte Clients gesendet werden.
<code class="go">// ... // Send a message to a client with ID "targetID". hub.send <- message{ID: "targetID", data: messageData} // ...</code>
Durch Befolgen der oben beschriebenen Schritte ist es möglich, Websocket-Nachrichten an bestimmte Clients zu senden, wenn Gorilla in Go verwendet wird. Es ist jedoch wichtig, die Notwendigkeit einer Übertragung zu berücksichtigen, bevor Sie dieses Muster implementieren, da das im Gorilla-Repository bereitgestellte Chat-Beispiel nicht für Anwendungen ohne Übertragungsanforderungen geeignet ist.
Das obige ist der detaillierte Inhalt vonWie sende ich mit Gorilla Websocket-Nachrichten an bestimmte Clients in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!