socket.io发射到默认房间不工作
当我在不使用io.emit()的情况下调用emit时,所有连接的客户端都会收到您预期的消息。但是,当尝试使用io.to(socket.id).emit()将消息发送到默认房间时,客户端不会收到消息 请参阅位于的默认房间文档 使用nodejssocket.io发射到默认房间不工作,socket.io,socket.io-1.0,Socket.io,Socket.io 1.0,当我在不使用io.emit()的情况下调用emit时,所有连接的客户端都会收到您预期的消息。但是,当尝试使用io.to(socket.id).emit()将消息发送到默认房间时,客户端不会收到消息 请参阅位于的默认房间文档 使用nodejsv4.2.6 客户: var socket = io(); socket.on('connect', function() { $.ajax({ url: '/some-path', type: 'POST', data: {so
v4.2.6
客户:
var socket = io();
socket.on('connect', function() {
$.ajax({
url: '/some-path',
type: 'POST',
data: {socket_id: socket.id},
success: function(data) {
console.log(data);
}
});
});
服务器:
app.post('/some-path', function(req, res) {
var socketID = req.body.socket_id;
io.to(socketID).emit('message', {'message': socketID});
res.end(socketID);
});
这是正确的解决方案。发现服务器用于设置默认房间的default room socket.id与client socket.id不同。请告知 在客户机上如果对
socket.id
进行评估,您会得到类似于,v4eedsx5rndsxjzuaaa
在服务器上,io.On('connection',function(socket){})
如果您计算socket.id
,您将得到类似于,/#v4eEdSX5RnDSXjzuAAAA
的结果。
请注意,在client socket.id前面加了/#
所以你有两种方法来解决这个问题
/#
时将其发送到套接字ID/
前缀io.on('connection', function(socket) {
socketID = socket.client.id;
socket.join(socketID);
console.log('a user connected ' + socketID);
});
请出示相关代码。在socket.io中,如果发送正确,那么发送到房间就可以正常工作。很明显,这必须与您的代码有关。有关代码的问题必须包括相关代码。如果你不包含代码,我们怎么知道你在代码中做错了什么呢?谢谢@jfriend00,我想你的建议会对理解我的发现有很大的帮助。