从终端中读取回调

时间:2019-01-26 00:48:00

标签: node.js socket.io

每次从客户端到服务器收到套接字时,我的程序process.stdout.write();在终端中。但是,我无法向我的代码传递回调以从终端(process.stderr.on)读取数据流,并将其作为新的套接字(从服务器)发送回客户端。

现在,这是我的代码-在.write之后不起作用:

io.on('connection', (socket) => {
    socket.on('SEND_COORDINATES', (data) => {
      const dataToString = `${data.x.toString()}, ${data.y.toString()}`;
      process.stdout.write(dataToString);
    }, (data) => {
      process.stderr.on('data', (data) => {
        socket.emit("SEND_AGAIN_COORDINATES", {data};
      });
    }
    )
});

我不确定我能做到这一点,因此可能有些我无法理解的逻辑。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在将第三个参数传递给.on方法。看起来您正在使用socket.io。如果是这种情况,请查看其网站上有关.on的文档:

https://socket.io/docs/server-api/#socket-on-eventName-callback

通常是这种情况,但是.on是从Node EventEmitter继承的。我们现在去那里。

https://nodejs.org/api/events.html#events_emitter_on_eventname_listener

  

emitter.on(事件名称,侦听器)

     
      
  • eventName <字符串> | 事件的名称。
  •   
  • listener <函数>回调函数
  •   
  • 返回:
  •   

itter.on只有2个参数,因此看不到您的第二个回调或第三个参数。

io.on('connection', (socket) => {
    socket.on('SEND_COORDINATES', (data) => {}, (data) => {
        process.stderr.on('data', (data) => {});
    })
});

删除了一些内脏,所以您可以看得更好一些。一切都需要进入socket.on事件的FIRST回调。