node.js - 在回调中从终端读取
问题描述
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};
});
}
)
});
我不确定我能做到这一点,所以可能有一些我不明白的逻辑。感谢你们对我的帮助。
解决方案
您将第三个参数传递给 .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
发射器.on(事件名称,侦听器)
- 事件名称 <字符串> | <符号> 事件的名称。
- listener <Function> 回调函数
- 返回:< EventEmitter >
Emitter.on 只有 2 个参数,因此看不到您的第二个回调或第三个参数。
io.on('connection', (socket) => {
socket.on('SEND_COORDINATES', (data) => {}, (data) => {
process.stderr.on('data', (data) => {});
})
});
删除了一些内脏,以便您可以更好地看到它。一切都需要进入 socket.on 事件的 FIRST 回调。
推荐阅读
- javascript - Material-ui 自动完成 - OnChange 阻止其他功能正常工作
- merge - 在snakemake中合并vcf文件
- php - 获取属性值并替换标签 PHP
- excel - 如何在将列转换为行之前取出分隔符
- python - 当用户提供您的电子邮件地址时,如何使用 python 在 sqlite-3 中创建动态表
- xcode - AppStore,为什么网页版的应用图标会变形?
- sql - 2 个不同计数的总和:总共 4 个计数
- jsf - 自定义 JSF 控件库(自定义设计,不影响后端使用)
- javascript - 如何模拟只是一个函数的第 3 方模块('js-file-download')
- windows - Powershell Cmdlet 从网络适配器中删除静态配置的 DNS 地址