У меня несколько необычная ситуация. У меня есть x количество Raspberry Pis в группе узлов. Первый Pi обозначается как родительский пи. Его работа состоит в том, чтобы предупредить оставшихся Pis о событии, которое должно произойти, а другие дочерние Pis сообщают, что подтверждают получение сообщений через веб-сокет, которым управляет родительский Pi.
Это отлично работает. 1004 * Пограничный случай №1, если Pi переходит в автономный режим, я пытаюсь подключиться x количество раз перед отправкой предупреждения. Это работает нормально.
Edge case # 2 Если мастер отключается, мне нужно каким-то образом выбрать другого родителя и создать новый сокет, и мне нужно предупредить другой Pis о переключении на этот новый сокет. Поскольку сокет больше не доступен, связь между Pis отсутствует.
Каждый Pi изначально настроен как родительский и дочерний и сохраняется в коллекции, но не активируется. Первый Pi в списке выбран как родительский, и все они правильно активированы как родительский и дочерний.
Только когда родитель отключается на 30 секунд, новый родитель должен быть выбран, но поскольку сокет ушел, они не могут связаться, поэтому, в зависимости от того, какой из них первым делает переключение, это родитель, но никто из других Pis не узнает, что выбран новый родительский элемент, и пытается создать свой собственный сокет, что не сработает.
Итак, мой вопрос: как лучше всего справиться с этой ситуацией? Я пробовал несколько методов, чтобы попытаться определить, какой из них является новым Родителем, но все они предлагают разные варианты, создавая беспорядок.
Я очень благодарен за любые ваши предложения.
Спасибо!