数据上的节点 js 仅在写入流后执行

Posted

技术标签:

【中文标题】数据上的节点 js 仅在写入流后执行【英文标题】:node js on data only execute after writing to stream 【发布时间】:2021-04-23 12:26:30 【问题描述】:

您好,我正在尝试使用节点 net lib 连接到远程登录服务器。

net = require('net')

con = new net.Socket()
con.connect(23,'10.0.0.120',()=>
    console.log('telnet is connected')
)

con.on('data',(data)=>
    console.log('telnet :' + data)
    con.destroy()
)

con.on('close',()=>
    console.log('connection close')
)

套接字打开的那一刻,我应该会收到来自服务器的“登录:”消息,然后写入用户名。

使用wireshark我可以看到数据已经发送,但是节点没有对数据做出反应 奇怪的部分是当我通过套接字发送一些东西时突然对之前的数据做出反应

con.write('')
true
telnet :
login: 

【问题讨论】:

为什么在收到可能只有第一个字节的数据后使用 con.destroy? 这只是为了测试,evan 1 字节的数据应该出现在控制台上,但它只发生在 'con.write()' 之后,不管有多少数据已经到达..... 【参考方案1】:

您正在为名为 on 的事件添加侦听器,但当然,您应该使用名为 data 的事件。

改变...

con.on('on',(data)=>

...到...

con.on('data',(data)=>

【讨论】:

对不起,这已在代码中修复,但我也忘了更新帖子,我正在使用数据运行它,数据确实到达控制台但不是在数据到达的时间,只有在之后我写信给'con'

以上是关于数据上的节点 js 仅在写入流后执行的主要内容,如果未能解决你的问题,请参考以下文章

将csv数据直接写入节点js中的azure blob

EPERM 阻止的文件写入权限 - 删除然后写入新文件。节点.js

将文件写入节点js中的特定文件夹?

由于我的 Cassandra 集群中的负载过大,节点上的写入失败

插入失败,节点上的持久写入失败

通过 JS 自执行函数在 Head 中创建文本节点时遇到问题