минимизировать задержку и использование полосы пропускания между сервером node.js - PullRequest
0 голосов
/ 09 мая 2018

У меня есть скрипт node.js, который часто отправляет данные на сервер node.js. Сейчас клиент использует модуль node.js request для отправки пост-запроса, а сервер обрабатывает запрос через 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 в этом случае, так как сокет может отправлять данные по одному соединению без постоянной отправки заголовков.

Какой будет наилучший подход для минимизации задержки и использования полосы пропускания?

Примечание: я не собираюсь использовать какой-либо сторонний поставщик услуг для этого (хочу улучшить с точки зрения кодирования).

1 Ответ

0 голосов
/ 09 мая 2018

Если бы вопрос был WebSocket вместо HTTP / 2, я бы выбрал WebSocket.

  1. Кадры WebSocket немного меньше, 2-14 байтов служебной информации на кадр, по сравнению с фиксированным значением HTTP / 2. Поэтому для небольших сообщений WebSocket предлагает меньше служебной информации. Что должно привести к лучшей производительности 1 .

  2. На данный момент WebSocket все еще лучше поддерживается на серверах, прокси и брандмауэрах.

Если бы вопрос был более общим «как уменьшить задержку», то я бы отказался от JavaScript и переключился бы на C ++ и бинарное взаимодействие с нулевым копированием.


1 Хотя, чтобы быть уверенным, сравните оба и сравните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...