[英]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.