我已经设置了一个标准的nodejs服务器,现在我遇到了问题,如果一个客户端通过socket.io发送请求并且每个客户端都对它做出反应但是这是错误的我希望只有发送请求的客户端才会做出反应。
在客户端:
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 :(得分: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))