簡體   English   中英

Socket.io發送消息到特定的socket.id無法正常工作?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM