【问题标题】:Send a stream of response NodeJS ExpressJS发送响应流 NodeJS ExpressJS
【发布时间】:2019-07-12 23:49:44
【问题描述】:

我想向客户端发送来自the npm twitter package 的响应流。

终点看起来像

var client = new Twitter({
 consumer_key: '',
 consumer_secret: '',
 access_token_key: '',
 access_token_secret: ''
});

app.get('/', function(req,res) {
  const stream = client.stream('statuses/filter', {track: 'crypto'});
  stream.on('data', function(event) {
    res.status(200).json({tweet: event && event.text || 'nothing'})
 });
});

服务器对客户端应用程序响应一次,然后给出一个标头已发送的错误Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client,我该如何响应流?

谢谢。

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    所以,使用

    res.write().
    

    它并没有结束,所以你可以添加多次调用它,而在res.json & res.send之后你不能再写入res。

    【讨论】:

    • 并在发送完所有数据后调用 res.end()。
    • 谢谢@Muhammad Aadil Banara,我如何从客户端获得响应,这是一个角度应用程序?我现在正在研究 socketio actuallu
    • 不需要为此做任何不同的事情,只需像我们调用angular一样调用,调用angular的一种方式是这样的。 this.http.get('/app/test') .map((res:Response) => res.json()) .subscribe( data => { this.output = data}, err => console.error( err), () => console.log('done') );
    • 好的让我试试
    • 谢谢,但我已经使用 socket.io 实现了
    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2015-09-29
    • 1970-01-01
    • 2021-11-06
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多