Появилась задача организовать подключение к одному терминалу с разных серверов. На обоих серверах установлен ЛЭРС УЧЕТ, и соединение на одном из серверов организовано через m2m24, а на втором прямым подключением к серверу терминалов.
Терминал TELEOFIS WRX-700 позволяет организовывать подключение к 5 серверам одновременно.
У данных терминалов две логики работы с несколькими серверами:
- одновременное подключение к нескольким серверам и ожидание прихода данных. Как только с какого-нибудь сервера приходят данные, то терминал рвёт соединение со всеми остальными серверами и начинает работать только с тем, от которого пришли данные. После получения последнего пакета данных терминал выжидает время таймера тишины и рвёт данное соединение. Потом опять подключается ко всем серверами и опять ждёт.
- одновременное подключение только к одному серверу. В данном случае терминал подключается к первому серверу по списку и работает только с ним в случае удачного подключения. После окончания таймера тишины терминал рвёт соединение и подключается заново к первому по списку. Если первый по списку сервер недоступен для подключения, то терминал пытается подключить к следующему серверу по списку, который уже является резервным. После окончания таймера тишины соединение рвётся и всё начинается заново с попыткой подключения к первому серверу. В итоге, если первый сервер всегда доступен для подключения, то другие сервера никогда не дождутся подключения терминала.
Второй вариант организован только при наличии основного сервера и резервного, поэтому он нам не подходит, а вот работа на первом варианте недоступна по причине того, что ЛЭРС УЧЁТ помимо пакет init отправляет еще пакет start, который терминал определяет как начало передачи данных. В итоге терминал рвёт все соединения после получения данного пакета, даже если никакой передачи данных дальше не происходит.
В итоге имеет следующую картину:
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:05 CLOSE SOCKET NAME=1 IP= REASON=TIMEOUT - разрыв соединения из-за окончания таймера тишины
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:05 TRYING TO CONNECT TO hub.m2m24.ru:6006 ERROR - попытка подключения к hub.m2m24.ru:6006
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:06 OPEN_SOCKET NAME=2 IP=hub.m2m24.ru:6006 - подключение к hub.m2m24.ru:6006 (соединение №2);
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:07 AUTHORIZATION OK - авторизация прошла успешно
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:07 TRYING TO CONNECT TO 85.159.*.*:40000 ERROR - попытка подключения к нашему серверу
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:08 OPEN_SOCKET NAME=1 IP=85.159.*.*:40000 - подключение к нашему серверу (соединение №1);
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:08 AUTHORIZATION OK - авторизация на нашем сервер прошла успешно
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:09 CLOSE SOCKET NAME=2 IP= REASON=FOR OTHER CLIENT WORK - закрытие соединения №2из-за получения данных на соединении №1
DEBUG (****************) (IMEI: 3515*******2929)): 13:23:10 INPUT_DATA NAME=1 SIZE=13 - пришло 13 байт данных
DEBUG (****************) (IMEI: 3515*******2929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received - расшифровка данных
Таймер тишины выставлен в 10 минут, и он отрабатывает нормально. Приведу еще пару переподключений до данного лога:
DEBUG (****************) (IMEI: 3515*******2929)): 13:02:54 INPUT_DATA NAME=1 SIZE=13
DEBUG (****************) (IMEI: 3515*******2929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received
DEBUG (****************) (IMEI: 3515*******2929)): 13:13:02 INPUT_DATA NAME=1 SIZE=13
DEBUG (****************) (IMEI: 3515*******2929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received
Каждые 10 минут переподключение, получение 13 байт данных от прямого соединения с ЛЭРС УЧЕТ и отключение от hub.m2m24.ru. При постоянном нахождении в сети ЛЭРС УЧЕТ мы имеем отсутствие подключения к hub.m2m24.ru. В итоге было выяснено, что эти 13 байт и есть пакет start.
Обсуждение на эту тему в форуме ЛЭРС УЧЕТ: http://forum.lers.ru/viewtopic.php?f=20&t=7216
Общался с технической поддержкой TELEOFIS по поводу данного поведения терминалов WRX-700 и они сообщили, что пакет start отправлять терминалу WRX700 не обязательно, т.к. он прекрасно работает и без него.
Прошу внести изменения в драйвер работы с терминалом TELEOFIS WRX700 и сделать возможным прекратить отправку пакета start терминалу WRX700.