【问题标题】:why emit not working inside socket为什么发射在套接字内不起作用
【发布时间】:2016-02-27 22:32:21
【问题描述】:

例如,我正在尝试向套接字内的套接字发送事件

io.on('connection', function (socket) {
  socket.emit("connected", {msg: 1});

  socket.on('funcb', function (data) {
    console.log('funca sent following data');
    console.log(data); 
  });

  socket.on('funca', function (data) {
    console.log(data);
    socket.emit('funcb', data);
  });


});

funca 是从客户端/浏览器调用的,它尝试调用 funcb 但 func b 没有任何想法?

【问题讨论】:

  • 你在收听funcb之前发出了funcb。尝试在socket.on('funca'之前移动socket.on('funcb'…
  • 可能是“emit”只是将事件发送回客户端(浏览器)而不是套接字本身,所以它无法捕获事件 'funcb',我正在客户端(浏览器)中捕获 funcb
  • 你试过把socket.on('funcb'换成this.on('funcb'

标签: node.js socket.io


【解决方案1】:

用代码解释@bolav所说的:

客户端:

  socket.emit("connected", {msg: 1});

  socket.on('funcb', function (data) {
    console.log('funcb from server sent following data');
    console.log(data); 
  });

  socket.on('funca', function (data) {
    console.log(data);
    socket.emit('funcb', data);
  });

服务器端:

socket.on('funcb', function (data) {
console.log('funca from client side sent following data');
console.log(data);
socket.emit("funcb", data); 
});

【讨论】:

    【解决方案2】:

    可能是“发射”只是将事件发送回客户端(浏览器)而不是套接字本身,因此它无法捕获事件 'funcb'

    【讨论】:

      【解决方案3】:

      从客户端发送的socket.emit('funcb', data) 不会调用客户端上的socket.on('funcb') 侦听器。它将发射到另一端并调用服务器上的socket.on 侦听器。

      【讨论】:

      • 实际上它会调用所有收听funcb的人,包括emits的人。然而socket.broadcast.emit 将调用除发出它的人之外的所有收听funcb 的人
      猜你喜欢
      • 2021-09-23
      • 2023-03-06
      • 2020-05-20
      • 2010-11-14
      • 2017-03-18
      • 2015-10-20
      • 2012-05-19
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多