Javascript socket.emit()的作用域是什么?

Javascript socket.emit()的作用域是什么?,javascript,node.js,socket.io,chatbot,Javascript,Node.js,Socket.io,Chatbot,我们正在使用一个聊天应用程序。谁将接收通过socket.emit()发送的消息?在上面,它是这样给出的,socket.emit()将只向一个客户端发送消息 我们的需求是实现一对一的通信(在用户和服务器之间,而不是在两个用户之间)。目前,我们正在为不同的用户创建单独的聊天室,并使用io.in(room).emit()发送消息。消息将发送到该房间的每个人,根据我们的应用程序,一个房间将只有一个用户 通过创建一个单独的房间并设法响应特定的客户机,我们可以使用socket.emit()实现同样的效果吗

我们正在使用一个聊天应用程序。谁将接收通过socket.emit()发送的消息?在上面,它是这样给出的,
socket.emit()
将只向一个客户端发送消息

我们的需求是实现一对一的通信(在用户和服务器之间,而不是在两个用户之间)。目前,我们正在为不同的用户创建单独的聊天室,并使用
io.in(room).emit()
发送消息。消息将发送到该房间的每个人,根据我们的应用程序,一个房间将只有一个用户

通过创建一个单独的房间并设法响应特定的客户机,我们可以使用socket.emit()实现同样的效果吗

更新:-

为了进一步澄清,这里有一个场景

五个不同的用户打开聊天室,每个人都向服务器提出不同的问题。我们创建了五个不同的文件室(一个用于用户),并使用
io.in(room.emit()
响应用户


所以,实际上我们在这里做的是,在服务器端,我们根据用户所在的房间来识别用户。有更好的办法吗?听说socket.emit()只对一个客户端做出响应,并想知道它是否能缓解我们的问题。

根据您的要求,用户只向服务器发送数据。在客户端和服务器上使用相同的方法分别使用emit event和on event

客户端

客户端发出方法

socket.emit('DataClientToServer',{data : 'hello'});
客户端方法上,从服务器获取数据

socket.on('DataServerToClient',function(data){
            console.log(data);
        });
服务器

服务器打开方法获取数据并仅使用socket.id将数据发送到该客户端

socket.on('DataClientToServer', (data) => {
            console.log(data);
            //Send data to that client only using socket.id
            io.to(socket.id).emit('DataServerToClient',{data : 'Server to Client'});
        });
要检测哪个用户发送数据,您需要发送额外的数据,如用户唯一的用户名用户ID对象ID

每个用户都不需要房间


希望这对您有所帮助。

socket.emit()
只向该套接字发送消息。不清楚你还问了些什么
io.in(room).emit()
发送到该房间中的所有套接字
io.emit()
发送到连接到/(默认)命名空间的所有套接字。这些是您发送消息的主要选项。socket.io从不从一个用户发送到另一个用户。所有通信都是在客户端和服务器之间进行的。请确保客户端socket.io和服务器端socket.io完全不同。服务器发送到一个客户机,或每个人,或除一个客户机以外的所有人(可能限于一个房间,可能限于一个命名空间)。客户端只发送到服务器,句号。是的@Amadan。我们希望服务器只将消息发送给请求服务器提供某些内容的客户端。这样,当两个用户与服务器聊天时,服务器应确保不会向user1提供user2所问问题的答案。在客户端,我们使用socket=io()创建套接字。因此,根据@jfriend00的评论,这是否意味着在服务器端使用socket.emit()只会将消息发送给创建了socket的特定客户端?
socket.emit()
只会发送给该特定套接字。如果您在客户机中,那么这将发送到服务器。如果您在服务器中,那么您将发送到特定的客户机(与该套接字对象关联的客户机)。服务器可以访问许多不同的套接字对象(每个连接到它的客户端都有一个套接字对象)。从客户端向服务器发送消息没有问题。一行中的问题是,如何发送消息(服务器到客户机),使消息只发送到将消息发送到服务器的客户机?我已经更新了问题。希望天气转晴。