最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

socket.emit()的范围是什么?

运维笔记admin10浏览0评论

socket.emit()的范围是什么?

socket.emit()的范围是什么?

我们正在使用Socket.IO进行聊天应用。谁将收到通过socket.emit()发送的消息?在here上,它被赋予了,socket.emit()将仅向一个客户发送消息。

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

我们可以通过创建单个房间并设法响应特定客户来使用socket.emit()实现相同目标吗?

更新: -

有关更多说明,请参阅此方案。

五个不同的用户打开聊天框,每个人都向服务器询问不同的问题。我们创建了五个不同的房间(一个用户)并使用io.in(room).emit()回复用户。

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

回答如下:

根据您的要求,用户仅将数据发送到服务器。您可以在客户端使用emit事件,并使用相同的方法在服务器中使用事件。

客户

客户端发出方法

socket.emit('DataClientToServer',{data : 'hello'});

客户端on方法,从服务器获取数据

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或objectid等。

每个用户都不需要房间。

希望这对你有所帮助。

发布评论

评论列表(0)

  1. 暂无评论