我使用superagent
接收来自服务器的通知流
require('superagent')
.post('www.streaming.example.com')
.type('application/json')
.send({ foo: 'bar' })
.on('data', function(chunk) {
console.log('chunk:' + chunk); // nothing shows up
})
.on('readable', function() {
console.log('new data in!'); // nothing shows up
})
.pipe(process.stdout); // data is on the screen
由于某些原因data
和readable
事件尚未注册,我可以将数据传输到信息中心。我如何动态处理数据?
答案 0 :(得分:2)
查看pipe
方法的来源,您可以访问原始req
对象并在其上添加侦听器:
require('superagent')
.post('www.streaming.example.com')
.type('application/json')
.send({ foo: 'bar' })
.end().req.on('response',function(res){
res.on('data',function(chunk){
console.log(chunk)
})
res.pipe(process.stdout)
})
但如果有的话,这将无法处理重定向。
答案 1 :(得分:1)
看起来superagent
没有返回真正的流,但您可以使用类似through
的内容来处理数据:
var through = require('through');
require('superagent')
.post('www.streaming.example.com')
.type('application/json')
.send({ foo: 'bar' })
.pipe(through(function onData(chunk) {
console.log('chunk:' + chunk);
}, function onEnd() {
console.log('response ended');
}));
(尽管您必须先检查superagent
是否在通过管道发送数据之前首先下载整个响应)