每次从客户端到服务器收到套接字时,我的程序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};
});
}
)
});
我不确定我能做到这一点,因此可能有些我无法理解的逻辑。谢谢您的帮助。
答案 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回调。