2016-09-08 91 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 ....谢谢你的作品:) –