javascript - 如何在 Node.js HTTP2 中获取请求体?

标签 javascript node.js http2

我有以下代码,但不知道如何从请求中获取正文:

var http2 = require('http2');
var fs = require('fs');

var server = http2.createSecureServer({
  key: fs.readFileSync('localhost-privkey.pem'),
  cert: fs.readFileSync('localhost-cert.pem')
})

server.on('error', function (error) { console.error(error) })

server.on('stream', function (stream, headers, body) {

  var method = headers[':method']
  var path = headers[':path']
  var body = body || ''

  console.log(method, path, body)

  stream.respond({
    'content-type': `text/${type}`,
    ':status': 200
  })

  fs.readFile(file, function (error, file) {
    if (error) file = fs.readFileSync('error.html')
    return stream.end(file)
  })
})

server.listen(3443)

最佳答案

我认为您应该将 视为readable stream

server.on('stream', (stream, headers) => {
    var chunks = [];

    stream.on('data', function (chunk) {
        chunks.push(chunk);
    });

    stream.on('end', function () {
        // Here is your body
        var body = Buffer.concat(chunks);

        // Not sure if useful
        chunks = [];    
    });

});

此外,根据 documentation server.on('stream' 回调的第三个参数是flags,而不是body

关于javascript - 如何在 Node.js HTTP2 中获取请求体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55243371/

相关文章:

javascript - JS平均计算

javascript - 在vue中执行嵌套函数

javascript - 删除模式中的所有表-sequelize nodejs

node.js - Beanstalk : Node. js 部署-node-gyp 由于权限被拒绝而失败

c - 测试我的 h2c 实现的简单工具

javascript - 删除 chart.js 中的 "label"

javascript - 在 CouchDB 中获取数据库的所有文档

javascript - 我们如何在 Node 中设置总请求超时或丢弃请求(使用集群模块时)?

java - Okhttp3、http2多路复用POST请求在负载高峰期响应时间高

Jetty HTTP2 服务器推送支持