Как реализовать двунаправленную связь между сервером A и сервером B в узле js? - PullRequest
0 голосов
/ 27 апреля 2019

Может ли кто-нибудь помочь, поделившись примером кода,

Я объясню свою задачу ниже.

Сервер A является поставщиком данных (Они дали мне ссылку на веб-сокет для потоковой передачи данных). Сервер B означает (мой сервер AWS, я хочу сохранить эти данные в базу данных всякий раз, когда я получил от сервера A) ..

Требуется код узла js, который может подключаться к серверу A, пока я не остановлю сервер B, он должен сохранить данные в базе данных сервера B.

Например, предположим, что я запускаю сервер httpd там, где я использую служба httpd start перезапуск службы httpd

Аналогично, мое приложение должно работать ..

Заранее спасибо ..

1 Ответ

1 голос
/ 29 апреля 2019

В этом сценарии лучше всего использовать сервер 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 для контекста:

enter image description here

Надеюсь, это поможет!

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