Flask-SocketIO 2.0 может (возможно) делать то, что вы хотите. Это объясняется в разделе документации Using Multiple Workers.
В основном серверы настроены на подключение к общему ресурсу очереди сообщений (например, redis), а затем перед ним балансировщик нагрузки назначает клиентов любому из серверов в пуле с использованием липких сеансов. Операции широковещания координируются автоматически между серверами путем передачи сообщений в очереди.
В качестве дополнительной функции, если вы используете эту настройку, вы можете подключить любой процесс к очереди сообщений для отправки сообщений клиентам, например, вы можете передавать события клиентам из рабочего или другого вспомогательного процесса, который не является сервером SocketIO.
С вашего вопроса неясно, хотите ли вы реализовать что-то подобное, или если вы хотите, чтобы серверы общались по другой причине. Отправка пользовательских сообщений в очередь в настоящее время не поддерживается, но ваш вопрос дал мне эту идею, это может быть полезно для некоторых сценариев.
Что касается использования SocketIO-клиента, как и в вопросе, на который вы ссылаетесь, этот shouud также работает. Вы можете использовать этот пакет Python: https://pypi.python.org/pypi/socketIO-client. Если вы пройдете этот маршрут, вы можете иметь сервер быть клиентом и получать события или объединять комнаты.
Спасибо! Это очень полезно. Чтобы уточнить, чего я пытаюсь достичь: Я использую несколько компьютеров Raspberry Pi для интеграции различных датчиков и управляющей электроники. Поэтому, хотя у меня может быть веб-панель на клиентском устройстве, открывающая несколько веб-сокетов для подключения к каждому серверу Raspberry Pi, я хочу, чтобы два сервера Raspberry Pi могли обмениваться данными, а также консолидировать и/или действовать на нескольких входы на заднем конце, прежде чем принимать решение о том, что делать или представлять клиенту. Think temp sensor server отправляет данные на сервер управления печью, чтобы включить нагрев вверх или вниз. – Phil
В принципе у вас есть два варианта. Вы можете сделать то, что я упомянул в последнем абзаце (каждый Pi - это SocketIO-сервер, а также клиент SocketIO для других серверов) или, возможно, более эффективный, поместить redis-сервер в один из узлов и подключить все узлы к нему и обмениваться сообщениями через Pub/Sub. Этот последний подход - это то, что я реализовал для внутреннего использования в версии 2.0 расширения, но, как я упоминал выше, в настоящее время нет поддержки для пользовательского использования очереди, вы должны сделать это, поговорив напрямую с очередью. – Miguel