2016-03-21 89 views
1

Socket.io不显示自己发送的消息ip。 例如Socket.io,给自己的消息

var id = 333; 
socket.broadcast.to(id).emit('user', user); 

这工作不错,但消息只在客户端#333,但用户不是发给消息,没有在消息客户端的副本。

我想用这种方式来解决,但它不工作

socket.broadcast.to(socket.id).emit('user', user); 

为什么?

+0

我并不完全遵循你要在这里完成的任务。 'socket.id'是当前用户的套接字标识(不是waaayyy)。你能详细说明这个问题吗? –

+0

@SterlingArcher我的所有用户都由socket.id标识,但消息仅适用于收件人,而不是发件人。 – Emerceen

+0

我不明白...你想要发生什么?请添加一些您希望发生的输入和输出示例。 –

回答

0

没有更多的代码很难说你想要什么,但有一点是肯定的,以将消息发送给单个用户必须使用socket对象,并使用socket.emit

据我所知broadcast只用来告诉所有人,除了你自己。

,当涉及到跟踪用户的我最常做的是,我有以下几点:当用户连接到我的插座和完全地安装在用户的页面发送其ID

var userList = []; 
io.on('connection', function (socket) { 

    socket.on('userData', function (userDetails) { 
     userDetails.socket = socket; 
     userList[userDetails.id] = userDetails 
    }); 
}); 

Basicly (或者如果你愿意,可以使用一个令牌),然后将用户的socket映射到列表中,以便我可以在需要发送给该用户时再次快速提取它。


一个例子可以是:

user.id = 33连接到我们的服务器

一旦加载用户发出到我们的服务器userData功能

插座,然后取出并放入列表中行33

当我们需要我们可以使用下面的代码来获取用户socket

socket = userList[33]; 

,或者如果我们有对象:

socket = userList[user.id]; 

我希望这可以帮助你。