nodejs 如何支持打字机效果?
想用 nodeJs 做个 http 代理,
现在的问题是:响应还是在最后才返回到浏览器,而不是当收到数据时就返回
const express = require('express')
const compression = require ('compression')
const {
createProxyMiddleware
} = require('http-proxy-middleware')
const app = express()
app.use(compression())
const port = 9000
app.use('/', createProxyMiddleware({
// secure: true,
target: 'https://api.openai.com',
changeOrigin: true,
selfHandleResponse: true,
onProxyRes: function (proxyRes, req, res) {
try {
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Content-type', 'text/event-stream')
res.setHeader('Cache-Control', 'no-cache')
res.setHeader('Connection', 'keep-alive')
// 接收反向代理响应并将其转发给客户端
proxyRes.on('data', (chunk) => {
res.write(chunk)
res.flush()
})
proxyRes.on('end', (chunk) => {
res.end()
})
} catch (err) {
console.log(err)
}
}
}))
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
回复
1个回答
test
2024-07-05
构建SSE
服务,转发一下数据流,可以参考一下 https://www.ruanyifeng.com/blog/2017/05/server-sent_events.html
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容