最小化node.js服务器

时间:2018-05-09 14:42:56

标签: node.js performance http

我有一个node.js脚本,它经常将数据发送到node.js服务器。现在客户端使用node.js request模块发送post请求,服务器正在通过请求http服务器进行处理。

客户端:

const request = require('request');
// some iteration over time for sending event
request.post('http://localhost:8080/event', 
   { json: true, body: body }, 
   (err, res, body) => {
                callback(err)
   })

服务器

const http = require('http')
const server = http.createServer(function(req, res) {
    let body = []
    req.on('data', body.push.bind(body))
    req.on('end', () => {
      console.log(Buffer.concat(body).toString())
      res.end()
    })
  })

我想尽量减少带宽使用和延迟。

以下是我的想法:

  1. 我正在考虑使用http / 2,因为它可能有更好的性能(不确定,只是来自某些研发),但它仍然在node.js中实验。

  2. 现在它正在使用http,websocket会对这种情况产生任何影响,因为套接字可以通过单一连接发送数据,而不会一直发送标头。

  3. 最小化延迟和带宽使用的最佳方法是什么?

    注意:我不希望使用任何第三方服务提供商(希望从编码角度改进)。

1 个答案:

答案 0 :(得分:0)

如果问题是WebSocket与HTTP / 2,我会选择WebSocket。

  1. 与HTTP / 2固定的9相比,WebSocket帧略小,每帧开销2-14个字节。对于小消息,因此WebSocket提供的开销更少。这应该会带来更好的性能 1

  2. 截至目前,WebSocket仍然在服务器,代理和防火墙中得到更好的支持。

  3. 如果问题更为笼统“如何减少延迟”,那么我将放弃JavaScript并切换到C ++和零拷贝二进制通信。

    1 但是,可以肯定的是,基准测试并进行比较。