2017-05-26 84 views
0

我的NodeJS應用程序有問題。 我想在一個客戶端上發送不同的數據。我有來自Java程序的實時數據,而且我有來自數據庫的數據。這是工作,我看到兩個數據,但我想發送表中的圖形和數據庫數據的實時數據。我不知道如何區分它們。我使用socket.io和mysql。發送不同的數據到nodejs的同一客戶端

服務器

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

當連接到socket.io服務器,包括一些有效載荷,就像這樣:

client.js

const socketOptions = { 
     query: { 
      user_id: someUniqueId, 
      client_type: 'peasant' 
     } 
    } 

socketIO.connect('socket-domain', socketOptions) 

然後在服務器上,您需要捕獲此數據,還可以捕獲用於將數據發送到的唯一客戶端ID:

s erver.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和檢索它們,您可以使用redismemcached

+0

我在客戶端上輸入socketOptions?什麼是'套接字域'? –

+0

是的,已更新。以上是爲客戶端,下面是服務器。 'socket-domain'是你想連接的URL,例如'http:// localhost:5012'或'http:// my-website.com/socket'。我想你可以把它留空,只需使用'socketIO.connect(socketOptions)' – borislemke

+0

好的,謝謝,我會嘗試,我會告訴你,如果這是工作;) –

相關問題