Maison >développement back-end >Golang >Comment envoyer des mises à jour Websocket ciblées à des clients spécifiques dans Go (Gorilla) ?
Envoi de mises à jour Websocket à des clients spécifiques dans Go (Gorilla)
Bien que vous soyez novice en Go, vous recherchez des conseils sur la mise en œuvre de la communication Websocket pour votre projet de saisie anticipée. Vous avez essayé d'exploiter des exemples du référentiel GitHub de Gorilla, mais vous rencontrez des difficultés pour comprendre comment des clients spécifiques peuvent être identifiés et ciblés pour les mises à jour de Websocket.
Pour identifier les clients de manière unique, vous devez modifier le hub Gorilla et les structures client pour inclure un Champ d'identification. Ce champ peut être d'un type tel que int ou string.
Dans la structure Hub, remplacez la carte des connexions par une carte qui utilise ce type d'ID comme clé et l'objet de connexion comme valeur :
<code class="go">connections map[idType]*connection</code>
De plus, modifiez le champ de diffusion dans la structure Hub pour utiliser un type de message personnalisé contenant à la fois les données du message et l'ID du client cible :
<code class="go">send chan message</code>
Remplacez la boucle for responsable de l'envoi des messages de diffusion. avec le code suivant pour envoyer des messages à des clients spécifiques :
<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>
Pour envoyer des messages à des clients spécifiques, créez un message spécifiant l'ID du client cible :
<code class="go">hub.send <- message{ID: targetID, data: msg}</code>
En implémentant ces modifications, vous pouvez désormais envoyer des mises à jour Websocket ciblées à des clients spécifiques dans votre application Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!