我有一个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()
})
})
我想尽量减少带宽使用和延迟。
以下是我的想法:
我正在考虑使用http / 2,因为它可能有更好的性能(不确定,只是来自某些研发),但它仍然在node.js中实验。
现在它正在使用http,websocket会对这种情况产生任何影响,因为套接字可以通过单一连接发送数据,而不会一直发送标头。
最小化延迟和带宽使用的最佳方法是什么?
注意:我不希望使用任何第三方服务提供商(希望从编码角度改进)。
答案 0 :(得分:0)
如果问题是WebSocket与HTTP / 2,我会选择WebSocket。
与HTTP / 2固定的9相比,WebSocket帧略小,每帧开销2-14个字节。对于小消息,因此WebSocket提供的开销更少。这应该会带来更好的性能 1 。
截至目前,WebSocket仍然在服务器,代理和防火墙中得到更好的支持。
如果问题更为笼统“如何减少延迟”,那么我将放弃JavaScript并切换到C ++和零拷贝二进制通信。
1 但是,可以肯定的是,基准测试并进行比较。