WebSocket/RPC bridge server для связи между AutomationService и AutomationScheduler.
Этот сервер работает как посредник между Android приложениями:
- AutomationService - выполняет автоматизацию на устройстве
- AutomationScheduler - управляет и планирует автоматизацию
- WebSocket подключения с автоматическим переподключением
- RPC протокол для вызова методов
- Маршрутизация сообщений между клиентами
- Управление подключенными клиентами
- Логирование и мониторинг
- Java 11 или выше
- Maven 3.6+
- Linux Debian 11 (рекомендуется)
mvn clean packageЭто создаст файл target/bridge-server-1.0.0-shaded.jar
java -jar target/bridge-server-1.0.0-shaded.jarjava -jar target/bridge-server-1.0.0-shaded.jar --host 0.0.0.0 --port 9090# Запуск сервера
./start-server.sh [host] [port] [java_opts]
# Остановка сервера
./stop-server.shДля установки как службы Linux:
sudo ./install-service.shЗатем:
# Запуск службы
sudo systemctl start automation-bridge-server
# Просмотр статуса
sudo systemctl status automation-bridge-server
# Просмотр логов
sudo journalctl -u automation-bridge-server -fws://host:port/ws
{
"id": "uuid",
"type": "NOTIFICATION",
"method": "client.authenticate",
"params": {
"type": "automation_service|automation_scheduler",
"name": "ClientName",
"version": "1.0.0"
}
}{
"id": "uuid",
"type": "REQUEST",
"method": "automation.execute",
"params": {
"automationId": "automation_id"
}
}{
"id": "uuid",
"type": "REQUEST",
"method": "automation.get_status"
}automation.get_status- статус сервиса автоматизацииautomation.list- список автоматизацийautomation.get- получить автоматизацию по IDautomation.execute- выполнить автоматизациюvnc.get_status- статус VNC сервераvnc.start- запустить VNC серверvnc.stop- остановить VNC сервер
server.status- статус сервераserver.list_clients- список подключенных клиентовserver.ping- ping/pong
Добавьте в манифест:
<service android:name=".AutomationBridgeService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="dataSync" />
<receiver android:name=".AutomationBroadcastReceiver">
<intent-filter>
<action android:name="com.merged.automationservice.CONNECT_BRIDGE" />
<action android:name="com.merged.automationservice.DISCONNECT_BRIDGE" />
</intent-filter>
</receiver>Подключение к серверу:
Intent intent = new Intent("com.merged.automationservice.CONNECT_BRIDGE");
intent.putExtra("bridge_host", "192.168.1.100");
intent.putExtra("bridge_port", 9090);
intent.setPackage("com.merged.automationservice");
sendBroadcast(intent);Использование клиента:
BridgeWebSocketClient client = new BridgeWebSocketClient(this);
client.connect("192.168.1.100", 9090);
// Выполнение автоматизации
client.executeAutomation("automation_id")
.thenAccept(result -> {
// Обработка результата
});Логи сохраняются в:
- Консоль (stdout)
- Файл
logs/automation-bridge-server.log
Сервер предоставляет информацию о:
- Подключенных клиентах
- Статусе соединений
- Обработанных сообщениях
- Сервер привязан к localhost по умолчанию
- Для удаленных подключений укажите host 0.0.0.0
- Рекомендуется использовать файрвол для ограничения доступа
- В продакшене добавьте аутентификацию и шифрование
- Проверьте, что сервер запущен
- Проверьте host и port
- Проверьте файрвол
- Проверьте логи сервера
- Убедитесь в правильности WebSocket URL
- Проверьте сетевое соединение
- Увеличьте таймаут в клиенте
- Проверьте производительность сервера
- Проверьте логи для ошибок
Для разработки:
# Компиляция
mvn compile
# Запуск в debug режиме
mvn exec:java -Dexec.mainClass="com.merged.automation.bridge.AutomationBridgeServer" -Dexec.args="--host 127.0.0.1 --port 9090"
# Тесты
mvn test