node.js - NodeJS:SSH2 - 从流中读取最后 1000 个字母
问题描述
我有一个 Vue 应用程序,其中包含一个用于 xterm 的组件并与之并行我使用 ssh2/shell 作为具有全局 Vue 插件的客户端。我可以通过我的 ssh 插件连接到我的 xterm 组件上的服务器,并将我的 ssh 流与事件
一起写入 xterm 。
到目前为止一切顺利,效果很好。stream.on('data', cb)
我的问题从这里开始......如果我切换到另一个 Vue 路由并回到我的 xterm 组件。
xterm 组件被重新创建,当然,它是空的。有没有办法访问旧的流数据以及我错过的流数据,因为我从现有的流对象中离开了组件(它存在于我的全局 Vue 插件中)?我只需要用我的 ssh 连接的最后 1000 个字母来初始化我的 xterm 组件。
解决方案
我只是在我的“on Data”事件上调用一个单独的函数并将数据/块复制到一个字符串中。当我重新创建终端组件时,我使用缓冲区字符串初始化内容。此外,我可以观察我的“缓冲区”是否太满并对其进行切片。
如果有人遇到同样的情况,这里有一个例子:
stream.on('data', (data) => {
...
this.buffer(data)
})
...
buffer(data) {
this.streamBuffer += data // Saving data/chunks
const bufferLength = this.streamBuffer.length
if (bufferLength > 10000) {
this.streamBuffer = this.streamBuffer.slice(bufferLength - 8000)
}
}
推荐阅读
- vb.net - 如何以编程方式为水晶报表中详细部分的控件绘制线条?
- reactjs - 即使我在 React 中正确包含默认导出,也不包含默认导出
- python - 如何将字符串转换为类构造函数
- c++ - 来自 Nodejs 的 process.stdin.on 的 C++ 版本
- javascript - 如何在我的 Ajax 中包含我的 js 函数
- node.js - $text command not supported azure-cosmos-mongodb 错误,支持哪个版本?
- apache-kafka - 来自主题的 KTable 和服务重启
- javascript - 如何访问通过表单提交发送的查询参数
- decibel - 1% 时的总信道功率为 -33.9 dBm
- node.js - 如何解决 npm 中的(读取“isServer”)错误?