如何使用 socket.io 向特定客户端发送消息 [英] How to send a message to a particular client with socket.io

查看:62
本文介绍了如何使用 socket.io 向特定客户端发送消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 socket.io + node.js 开始,我知道如何在本地发送消息并广播 socket.broadcast.emit() 函数:- 所有连接的客户端都会收到同样的消息.

I'm starting with socket.io + node.js, I know how to send a message locally and to broadcast socket.broadcast.emit() function:- all the connected clients receive the same message.

现在,我想知道如何向特定客户端发送私人消息,我的意思是一个用于 2 人(客户端到客户端流)之间的私人聊天的套接字.谢谢.

Now, I would like to know how to send a private message to a particular client, I mean one socket for a private chat between 2 person (Client-To-Client stream). Thanks.

推荐答案

当用户连接时,它应该向服务器发送一条消息,用户名必须是唯一的,例如电子邮件.

When a user connects, it should send a message to the server with a username which has to be unique, like an email.

一对用户名和套接字应该存储在这样的对象中:

A pair of username and socket should be stored in an object like this:

var users = {
    'userA@example.com': [socket object],
    'userB@example.com': [socket object],
    'userC@example.com': [socket object]
}

在客户端,使用以下数据向服务器发送一个对象:

On the client, emit an object to the server with the following data:

{
    to:[the other receiver's username as a string],
    from:[the person who sent the message as string],
    message:[the message to be sent as string]
}

在服务器上,监听消息.收到消息后,将数据发送给接收者.

On the server, listen for messages. When a message is received, emit the data to the receiver.

users[data.to].emit('receivedMessage', data)

在客户端上,侦听名为receivedMessage"的服务器发出的信息,通过读取数据,您可以处理它来自谁以及发送的消息.

On the client, listen for emits from the server called 'receivedMessage', and by reading the data you can handle who it came from and the message that was sent.

这篇关于如何使用 socket.io 向特定客户端发送消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆