如何解决在NodeJS中,如何将流终止于某个特定的字符串?
我有一条Express路线,点击该路线时会生成一个单独的流程,然后将该流程的标准输出流式传输给用户。
我只对那个单独过程的输出的第一部分感兴趣,并且想在stdout包含某些字符集(例如{{1时)结束流(并关闭与用户的连接) }}。
这是我的ExpressJS代码:
-----
以下是我的流程中的一些标准输出示例:
const express = require('express')
const router = express.Router()
const {spawn} = require('child_process')
router.post('/',function (req,res,next) {
res.type('text')
const program = spawn(
'./foo',{shell: false}
)
program.stdout.on('data',(data) => res.write(data))
program.on('close',(code) => res.end())
req.on('close',(err) => {
program.kill(15)
})
})
在此示例中,我想在终止进程并调用Lorem ipsum dolor sit amet,consectetur adipiscing elit.
Suspendisse molestie porttitor nulla,mattis laoreet arcu ullamcorper vel.
Fusce dapibus mollis dui,vel ornare nulla fermentum quis.
-----
Pellentesque fringilla convallis purus,sit amet laoreet quam ornare eu.
Curabitur ut ultricies urna.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae
-----
Proin varius laoreet blandit. Proin pulvinar a augue non volutpat.
之前流式传输以下内容。
res.end()
解决方法
我为您制作了这个示例。希望对您有用:-)
const fs = require('fs')
const rs = fs.createReadStream('./lorem.txt')
let keepReading = true;
rs.on('data',data => {
if (keepReading) {
const lines = data.toString().split('\n');
let selectedText = ''
for (const line of lines) {
if (line.includes('-----')) {
keepReading = false;
}
if (keepReading) {
if (selectedText) {
selectedText += '\n' + line;
} else {
selectedText += line;
}
}
}
process.stdout.write(selectedText)
}
})
rs.on('close',code => process.exit(code))
请注意,rs
等同于您的program
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。