【问题标题】:Nodejs multiple client handlingNodejs 多客户端处理
【发布时间】:2017-11-03 22:36:11
【问题描述】:

我已经设置了一个标准的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 个客户端按下按钮从数据库中加载数据,所有客户端都对其做出反应并从服务器获取数据。

【问题讨论】:

  • 你能分享一下你目前正在尝试的代码吗?

标签: node.js socket.io


【解决方案1】:

您可能想从服务器端使用 socket.emit。 看看这个 socket.io 备忘单,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))

【讨论】:

  • 它没有工作它会产生一个错误“无法读取 undefind emit 的属性”
  • 在客户端脚本中将套接字对象传递给您的 show 函数,并将 io.emit('new') 更改为 socket.emit('new')
猜你喜欢
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2017-11-29
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 2018-03-20
相关资源
最近更新 更多