[英]Socket.io sending message to specific socket.id not working?
我在使用node.js服务器的socket.io中有这个应用程序,我想为应用程序中连接的每个点更新点。 我在clients数组中按socket.id和secret保留了已连接用户的列表。 我尝试过这样,但是要点不会更新。 谁能告诉我怎么了?
function updatePoints(){
points = [];
pool.getConnection(function(err, connection) {
connection.query("SELECT * FROM `users`", function(error, rows) {
for (var i = 0; i < rows.length; i++) {
points.push({"secret" : rows[i].secret, "points" : rows[i].pontos});
}
for (var l = 0; l < points.length; l++) {
for (var p = 0; p < clients.length; p++) {
if(points[l].secret == clients[p].secret){
var socketID = clients[p].socket;
var pontos = points[l].points;
io.sockets.connected[socketID].emit('update points', pontos);
}
}
}
});
});
}
Socket.io版本:1.3.7
如何使客户端对象通过分配套接字和point属性然后将其推送到客户端数组中呢?
socketServer.on('connection', function(socket){
//make your query here
...
//make a client object
var client = {point: row.point, socket: socket};
clients[row.secret] = client;
});
那么您可以通过以下方式检索客户端:
//query...
....
clients[row.secret].socket.emit('something', function);
编辑:
如果要广播给连接的客户端,则可以:
socketServer.emit('something', function);
如果您想传播给除广播节目播出者以外的所有人。 那么你也能:
clients[row.secret].broadcast.emit('something', function;
更换
io.sockets.connected[socketID].emit('update points', pontos);
有了这个
socket.broadcast.to(socketID).emit('update points', pontos);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.