我的NodeJS应用程序出了问题。 我想在一个客户端上发送不同的数据。我有来自Java程序的实时数据,我有来自数据库的数据。这是工作,我看到两个数据,但我想在表格中的图形和数据库数据上发送实时数据。我不知道如何区分它们。我使用socket.io和mysql。
服务器
socket.on('connection', function(client){
console.log('Le client s\'est connecté au serveur');
socketnavigateur = client; //socketnavigateur is a global variable for realtime data.
var selectQuery = "SELECT * FROM Depassement";
conn.query(selectQuery, function select(error, rows, fields){
if(error){
console.log(error);
conn.end();
return;
}
if(rows.length > 0){
var Result = rows[0];
client.send('id: ' + Result['Id_depassement']);
client.send('Date : ' + Result['Date_Dep']);
client.send('Heure : '+ Result['Heure_Dep']);
client.send('Puissance: ' + Result['P_reactive']);
} else{
console.log(error);
}
});
//Message listener
client.on('message', function(event){
console.log('Réception du message du client =',event);
});
client.on('disconnect',function(){
console.log('Le client s\'est déconnecté !');
});
});
客户端
var socket = io.connect();
// connection listener
socket.on('connect',function() {
log('<span style="color:green;">Le serveur s\'est connecte au client !</span>');
});
// message listener
socket.on('message',function(data) {
log(data);
console.log(data);
drawGraph(data);
});
socket.on('disconnect',function() {
log('<span style="color:red;">Le client s\'est déconnecte !</span>');
});
// function to display on client
function log(message) {
var li = document.createElement('li');
li.innerHTML = message;
document.getElementById('message-list').appendChild(li);
document.getElementById('id').innerHTML = message;
}
感谢您的帮助,如果我的英语不好,请抱歉:p
答案 0 :(得分:0)
连接到socket.io
服务器时,包含一些有效负载,如下所示:
client.js
const socketOptions = {
query: {
user_id: someUniqueId,
client_type: 'peasant'
}
}
socketIO.connect('socket-domain', socketOptions)
然后在服务器上,您需要捕获此数据,您还可以捕获用于将数据发送到的唯一客户端ID:
server.js
io.on('connection', (socket) => {
const dataFromUser = socket.handshake.query // this is the data
// so you may access, for example dataFromUser.user_id
// this is a unique ID generated by socket.io
const clientId = socket.id
// You can use this id to send data to specific users e.g:
io.to(clientId).emit('message', 'You have 1 new message')
})
我会告诉您如何存储ID并检索它们,您可以使用redis
或memcached