Socket.io不会显示自己发送的消息。 例如
var id = 333;
socket.broadcast.to(id).emit('user', user);
它运行良好,但消息仅在客户端#333中,但是用户比发送消息,在消息客户端中没有副本。
我想以这种方式解决,但它不起作用
socket.broadcast.to(socket.id).emit('user', user);
为什么?
答案 0 :(得分:0)
如果没有更多代码,很难说出你想要的东西,但有一件事是肯定的,为了向单个用户发送消息,你必须使用socket
个对象并使用socket.emit
据我所知broadcast
仅用于告诉除自己以外的所有人。
在跟踪用户时,我通常会做的事情是:
var userList = [];
io.on('connection', function (socket) {
socket.on('userData', function (userDetails) {
userDetails.socket = socket;
userList[userDetails.id] = userDetails
});
});
基本上当用户连接到我的套接字并且用户的页面被完全加载时,它会发送其id(或者如果你愿意的话),然后我将用户的socket
映射到列表中,这样我就可以快速选择如果我希望发送给该用户,请再次启动。
一个例子可能是:
user.id = 33
连接到我们的服务器
加载后,用户会发送到我们的服务器userData
功能
然后获取套接字并将其放入行33
当我们需要时,我们可以使用以下代码来获取用户socket
:
socket = userList[33];
或者如果我们有对象:
socket = userList[user.id];
我希望这会对你有所帮助。
答案 1 :(得分:0)
为此,您可以使用socket.emit('message')
。
socket.emit:
仅发射一个套接字。
希望这会对您有所帮助。您也可以查看以下链接:socket.io send packet to sender only