2016-09-08 93 views
0

我已經設置了一個標準的nodejs服務器,現在我遇到了問題,如果一個客戶端通過socket.io發送請求,並且每個客戶端都會對它作出反應,但這是錯誤的,我希望只有客戶端發送請求應該反應。Nodejs多個客戶端處理

function show(){ 
       socket.emit('show') 
      } 

在服務器端:

socket.on('show', function(){ 
     io.emit('request', 'clear'); //clear a table on the website 
     db.each("SELECT tableRow1, tableRow2, tableRow3 FROM table, 
     function(err, row){ 
      io.emit('new', row.tableRow1, row.tableRow2, row.tableRow3) 
     }); 
    }); 

和在客戶端側的反應爲:

socket.on('new', function(tableRow1, tableRow2, tableRow3){ 
     var myString = ' <input id="id1" type="checkbox" name="boxes"><label for="id1" id="labelID" onclick="Click(this)">'tableRow1'</label>' 
     $('#tableID').append($('<tr>') 
     .append($("<td>"+myString+'<td/>'+"<td>tableRow2</td>"+"<td>"TableRow3"</td>")).append($('<tr/>'))); 
    }); 

和現在的問題是再1個客戶

在客戶端

按下按鈕以從數據庫加載數據,所有客戶端都對其作出反應並從服務器獲取數據。

+0

你能分享你目前與嘗試這種代碼? – leroydev

回答

0

您可能想從服務器端使用socket.emit。 看看這個socket.io的cheatsheet,https://gist.github.com/alexpchin/3f257d0bb813e2c8c476

客戶端例如

// send to server 
socket.emit('retrieve users') 
// register callback 
socket.on('retrieve users', doSomething) 

服務器端的例子

// sending to sender-client only 
socket.on('retrieve users',() => socket.emit('retrieve users', users)) 
+0

它沒有工作它引發一個錯誤「不能讀取undefind的屬性發射」 –

+0

將套接字對象傳遞給客戶端腳本中的show函數並將io.emit('new')更改爲socket.emit('new') – Adit

+0

好的我發現我的misstake ....謝謝你的作品:) –