Heim >Backend-Entwicklung >Golang >Wie sende ich gezielte Websocket-Updates an bestimmte Clients in Go (Gorilla)?
Senden von Websocket-Updates an bestimmte Clients in Go (Gorilla)
Obwohl Sie ein Go-Neuling sind, suchen Sie nach Anleitung zur Implementierung der Websocket-Kommunikation für Ihr Typeahead-Projekt. Sie haben versucht, Beispiele aus dem GitHub-Repository von Gorilla zu nutzen, stoßen jedoch auf Schwierigkeiten beim Verständnis, wie bestimmte Clients identifiziert und für Websocket-Updates gezielt ausgewählt werden können.
Um Clients eindeutig zu identifizieren, müssen Sie die Gorilla-Hub- und Client-Strukturen so ändern, dass sie eine enthalten ID-Feld. Dieses Feld kann vom Typ „int“ oder „string“ sein.
Ersetzen Sie innerhalb der Hub-Struktur die Verbindungszuordnung durch eine Zuordnung, die diesen ID-Typ als Schlüssel und das Verbindungsobjekt als Wert verwendet:
<code class="go">connections map[idType]*connection</code>
Ändern Sie außerdem das Broadcast-Feld in der Hub-Struktur, um einen benutzerdefinierten Nachrichtentyp zu verwenden, der sowohl die Nachrichtendaten als auch die Ziel-Client-ID enthält:
<code class="go">send chan message</code>
Ersetzen Sie die for-Schleife, die für das Senden von Broadcast-Nachrichten verantwortlich ist mit dem folgenden Code, um Nachrichten an bestimmte Clients zu senden:
<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>
Um Nachrichten an bestimmte Clients zu senden, erstellen Sie eine Nachricht, die die ID des Zielclients angibt:
<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
Durch die Implementierung dieser Änderungen Sie können jetzt gezielte Websocket-Updates an bestimmte Clients in Ihrer Go-Anwendung senden.
Das obige ist der detaillierte Inhalt vonWie sende ich gezielte Websocket-Updates an bestimmte Clients in Go (Gorilla)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!