В этом сценарии лучше всего использовать сервер WebSockets, поскольку создание WS-реализации с нуля не только требует много времени, но тот факт, что она уже решена, делает его бесполезным.Поскольку вы пометили Socket.io, это хороший вариант для начала.Это инструмент с открытым исходным кодом, простой в использовании и отслеживаемый в документации.
Однако, поскольку он с открытым исходным кодом, он не предоставляет некоторые функциональные возможности, которые необходимы для потоковой передачи данных на производственном уровне.приложение.Существуют такие проблемы, как масштабируемость, совместимость (для конечных точек, работающих на протоколах, отличных от WebSockets), отказоустойчивость, обеспечение надежного упорядочения сообщений и т. Д.
Предоставляются инфраструктура обмена сообщениями в реальном времени и упомянутые выше функции критического производственного уровня.в качестве службы под названием «Сеть потока данных».Есть несколько компаний, предоставляющих это, таких как Ably, PubNub и т. Д.
Я много работал с Ably , поэтому так удобно делиться примером в Node.js, который использует Ably:
var Ably = require('ably');
var realtime = new Ably.Realtime('YOUR-API-KEY');
var channel = realtime.channels.get('data-stream-a');
//subscribe on devices or database
channel.subscribe(function(message) {
console.log("Received: " message.data);
});
//publish from Server A
channel.publish("example", "message data");
Вы можете создать бесплатную учетную запись, чтобы получить ключ API с 3 миллионами бесплатных сообщений в месяц, этого должно быть достаточно для его правильной проверки.
Существует также концепция Reactor functions , который по существу вызывает функции без сервера в реальном времени на AWS, Azure, Gcloud и т. Д. Вы также можете разместить базу данных на одной стороне и регистрировать данные по мере их поступления.Вставьте это изображение, найденное на веб-сайте Ably для контекста:
Надеюсь, это поможет!