Уважаемый,
Я использую Node.js для создания TCP-клиента с использованием модуля «net» для подключения к аппаратурному устройству (которое поддерживает протокол TCP), которое передает данные, когда доступно, так что я мог бы слушать on ('data', callback) event,
Это нормально для одного клиента. Но когда у меня есть более 10 аппаратных устройств с уникальным IP-адресом, мне нужно управлять несколькими клиентами и событиями. и вопрос заключается вМодуль Node.js 'net' Обработка нескольких TCP-клиентов
В то время как количество клиентов увеличивается Данные из различных устройств будет еще Асинхронный или собирается Блокированные?
Могу ли я получать данные из нескольких устройств в то время (в среднем без задержки в секундах, поскольку приложение RealTime, и мы не нужны задержки в получении данных от оборудования)
Как управлять несколькими клиентами или родительским/дочерним процессом с помощью каждого дочернего процесса, связанного с аппаратным обеспечением (счетным) с помощью Socket Communication, эффективным способом?
И когда соединение TCP разрывается (проблема с сетью, проблемы с Ethernet-кабелем), но я уверен, что нет «надежного способа обнаружения прерываний в соединении». Как я могу подключиться и подключиться к разъединенным соединениям ?
Если какое-либо руководство/опыт, пожалуйста, поделитесь, чтобы решить эту проблему.
Заранее спасибо
Спасибо за отличный ответ! И процесс создания родительского/дочернего процесса просто имеет массив IP-адресов в родительском процессе и разворачивает программу сокета как дочерний процесс для каждого уникального IP-адреса, поэтому я могу управлять им из родительского процесса, когда они выходят из-за ошибки. Другая основная проблема - событие закрытия сокета запускается, когда сервер/клиент отправляет пакет FIN, поэтому, когда я отсоединяю кабель Ethernet, ошибка/закрытие вызова никогда не запускаются (я протестировал это), я тестирую их, потому что это критическое приложение реального времени. И ваши объяснения потрясающие, позвольте мне пройти и реализовать его, чтобы я мог принять ответ. – androidlover
@androidlover, если вы отключите ethernet, есть вероятность, что если вы подключите его обратно, он все равно будет работать, поэтому закрытие соединения сразу может не иметь смысла, если сеть перестанет работать некоторое время. Это ОС, которая обрабатывает пересоединение сокетов ... Хотя тайм-аут может использоваться для предотвращения неопределенного сокета. –
что я думал просто написать через сокет и проверить, что соединение в прямом эфире (хост доступен), если не подключиться по методу setInterval. или просто командой setInterval ping для хоста - я делаю это, чтобы убедиться, что я все еще подключен к аппаратным устройствам. Аппаратное устройство не отправляет какой-либо пакет FIN, чтобы закрыть соединение при любых обстоятельствах. – androidlover