Je commence par socket.io + node.js, je sais envoyer un message localement et diffuser une socket.broadcast.emit()
fonction: - tous les clients connectés reçoivent le même message.
Maintenant, j'aimerais savoir comment envoyer un message privé à un client particulier, je veux dire une prise pour un chat privé entre 2 personnes (flux client-à-client). Merci.
Réponses:
Lorsqu'un utilisateur se connecte, il doit envoyer un message au serveur avec un nom d'utilisateur qui doit être unique, comme un e-mail.
Une paire de nom d'utilisateur et de socket doit être stockée dans un objet comme celui-ci:
Sur le client, émettez un objet vers le serveur avec les données suivantes:
Sur le serveur, écoutez les messages. Lorsqu'un message est reçu, émettez les données vers le récepteur.
Sur le client, écoutez les émissions du serveur appelé «receiveMessage», et en lisant les données, vous pouvez gérer la provenance et le message envoyé.
la source
Vous pouvez utiliser des salles socket.io. Du côté client, émettez un événement («rejoindre» dans ce cas, peut être n'importe quoi) avec n'importe quel identifiant unique (email, id).
Côté client:
Maintenant, du côté du serveur, utilisez ces informations pour créer une salle unique pour cet utilisateur
Du côté serveur:
Ainsi, maintenant, chaque utilisateur a rejoint une salle nommée d'après l'e-mail de l'utilisateur. Donc, si vous souhaitez envoyer un message à un utilisateur spécifique, il vous suffit de
Du côté serveur:
La dernière chose à faire côté client est d'écouter l'événement "new_msg".
Côté client:
J'espère que vous avez l'idée.
la source
socket.io-redis
.{email: [email protected]}
différent pour toute connexion si tous les clients qui vont à l'application n'ont pas d'utilisateur,[email protected]
comment pourrais-je en faire un utilisateur[email protected]
pour le deuxième client qui se connecte afin que je puisse avoir des chambres différentes. désolé si c'est une question ennuyeuse.SÛR: Simplement,
Voici ce dont vous avez besoin:
chaque fois qu'un utilisateur rejoint le serveur, les détails du socket seront générés, y compris l'ID. C'est l'ID qui aide vraiment à envoyer un message à des personnes en particulier.
nous devons d'abord stocker tous les socket.ids dans un tableau,
ici nom est le nom du destinataire. Exemple:
Donc, maintenant, nous pouvons obtenir ce socket.id avec le nom du destinataire chaque fois que nous envoyons un message:
pour cela, nous devons connaître le nom de réception. Vous devez émettre le nom du récepteur sur le serveur.
la dernière chose est:
J'espère que cela fonctionne bien pour vous.
Bonne chance!!
la source
Vous pouvez vous référer aux salles socket.io . Lorsque vous avez établi une connexion, vous pouvez le rejoindre dans la salle nommée, par exemple "user. # {Userid}".
Après cela, vous pouvez envoyer un message privé à n'importe quel client par un nom pratique, par exemple:
Dans l'opération ci-dessus, nous envoyons "new_message" à l'utilisateur "125".
Merci.
la source
Dans un projet de notre entreprise, nous utilisons une approche «salles» et son nom est une combinaison d'identifiants d'utilisateur de tous les utilisateurs dans une conversation en tant qu'identifiant unique (notre implémentation ressemble plus à Facebook Messenger), exemple:
| id | nom | 1 | Scott | 2 | Susan
Le nom de "room" sera "1-2" (les identifiants sont classés par ordre croissant) et sur disconnect socket.io nettoie automatiquement la pièce
de cette façon, vous envoyez des messages uniquement à cette salle et uniquement aux utilisateurs en ligne (connectés) (moins de paquets envoyés sur le serveur).
la source
Permettez-moi de simplifier les choses avec les salles socket.io. demander à un serveur avec un identifiant unique de rejoindre un serveur. ici, nous utilisons un e-mail comme identifiant unique.
Client Socket.io
Lorsque l'utilisateur rejoint un serveur, créez une salle pour cet utilisateur
Serveur Socket.io
Maintenant, nous sommes tous prêts à nous rejoindre. laissez émettre quelque chose à partir de la
to
salle des serveurs , afin que l'utilisateur puisse écouter.Serveur Socket.io
Laisser finaliser le sujet en écoutant l'
message
événement côté clientLa référence des salles Socket.io
la source