Node.js 'net' module Обработка нескольких клиентов TCP

Уважаемая,
Я использую Node.js для создания TCP-клиента, используя модуль "net" для подключения к аппаратному устройству (которое поддерживает только протокол TCP), которое передает потоковые данные, когда доступно, чтобы я мог прослушивать событие ("data",callback),
Это хорошо для одного клиента, но когда у меня есть более 10 аппаратных устройств с уникальным IP-адресом, мне нужно управлять несколькими клиентами и событиями. И вопрос

В то время как количество клиентов увеличивается. Данные с другого устройства все еще будут асинхронными или будут заблокированы?

Могу ли я получать данные с нескольких устройств одновременно (т.е. без задержки в секундах, потому что приложение - RealTime, и нам не нужно задерживать получение данных с аппаратного обеспечения)

Как управлять несколькими клиентами или родительским / дочерним процессом, когда каждый дочерний процесс подключается к аппаратному обеспечению (счетному) через Socket Communication - это эффективный способ?

И когда разрывается TCP-соединение (проблема с сетью, проблемы с кабелем Ethernet), но я почти уверен, что не существует "надежного способа обнаружения прерываний в соединении". Как я могу решить проблему и снова подключиться к сломанным соединениям?

Если есть какие-либо рекомендации / опыт, пожалуйста, поделитесь, чтобы решить эту инженерную проблему.

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

1 ответ

Это должно быть чем-то, в чем преуспевает узел, и это отличный вариант использования для узла.

В то время как количество клиентов увеличивается. Данные с другого устройства все еще будут асинхронными или будут заблокированы?

Чтение и запись из вашего сокета должны быть асинхронными, даже если имеется большое количество клиентов.

Могу ли я получать данные с нескольких устройств одновременно (т.е. без задержки в секундах, потому что приложение - RealTime, и нам не нужно задерживать получение данных с аппаратного обеспечения)

Да, цикл событий узла реализован через libuv, http://docs.libuv.org/en/v1.x/. Я не очень знаком с ним или его реализацией, но я предполагаю, что он делегирует обработку событий самой эффективной из доступных библиотек ОС (epoll, kqueue). Благодаря этому IO является асинхронным, и вам не нужно делать ничего особенного, кроме как использовать библиотеку узлов сети и регистрировать, какие действия предпринять при чтении, открытии, закрытии сокетов и т. Д. https://nodejs.org/api/net.html

Как управлять несколькими клиентами или родительским / дочерним процессом, когда каждый дочерний процесс подключается к аппаратному обеспечению (счетному) через Socket Communication - это эффективный способ?

Используя API-интерфейс net tcp-сервера, вы можете зарегистрировать действия для выполнения определенных событий сокета ввода-вывода, и он должен беспрепятственно обрабатывать много одновременных открытых соединений (от сотен до тысяч). Я не совсем уверен, какой тип родительского / дочернего процесса вы настраиваете. иметь в виду.

И когда разрывается TCP-соединение (проблема с сетью, проблемы с кабелем Ethernet), но я почти уверен, что не существует "надежного способа обнаружения прерываний в соединении". Как я могу решить проблему и снова подключиться к сломанным соединениям?

Эта проблема не зависит от узла, и способов ее решения должно быть достаточно много. Вопрос в том, как определить, недоступен ли сервер, если соединение имеет очень высокую задержку?

Если сокет закрыт, вы можете подписаться на событие close и выполнить соответствующее действие. https://nodejs.org/api/net.html. Другая стратегия заключается в реализации тайм-аута. Если в течение нескольких минут данные не получены, вы можете очистить соединение, закрыв его.

Другие вопросы по тегам