The Verse Proxy system is a modern microservices-based solution for Wialon IPS protocol testing and message processing:
Message flow through the Kafka-based system:
The Connection Tracker Service provides real-time monitoring of TCP connections and device status. It integrates with Kafka for message processing and Redis for state storage.
// Connect to Connection Tracker WebSocket
const ws = new WebSocket('ws://localhost:8081');
// Listen for connection events
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Connection event:', data);
};
// Event types: 'new', 'update', 'remove'
// Data includes: socketId, serverId, deviceInfo, timestamp
The project includes comprehensive E2E testing using Playwright:
# Core Functionality Tests
- Web interface loading and navigation
- TCP connection testing
- WebSocket communication
- Connection tracking
- Mobile responsiveness
- Error handling
# Integration Tests
- Kafka message processing
- Redis state management
- Docker service communication
- Cross-service data flow
| Port | Service | Description | Access |
|---|---|---|---|
| 80 | Web Interface (Nginx) | Main web testing interface | http://localhost |
| 8080 | WebSocket Proxy | WebSocket to TCP bridge | ws://localhost:8080 |
| 8081 | Connection Tracker WebSocket | Real-time connection monitoring | ws://localhost:8081 |
| 3030 | Main Application (HTTP) | Health checks and API endpoints | http://localhost:3030 |
| 3031 | TCP Socket Server | Wialon IPS protocol handling | localhost:3031 |
| 9092 | Kafka | Message broker protocol | Internal only |
| 8082 | Kafka UI | Web-based topic management | http://localhost:8082 |
| 6379 | Redis | Connection state storage | Internal only |
| 2181 | Zookeeper | Kafka coordination service | Internal only |
#L#123456789012345;password#D#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#S#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#B#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#C#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0All messages receive acknowledgments:
#AL#123456789012345#AL#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0
# Install dependencies
npm install
# Start all services with Docker
npm run docker:up
./scripts/docker-manager.sh start all
# Start main application
npm run start
# Development mode with auto-reload
npm run dev
# Start specific services
npm run start --workspace=@verse-proxy/connection-tracker
npm run start --workspace=@verse-proxy/main-app
# Run all tests
npm run test:all
# Run E2E tests
npm run test:e2e
./run-all-e2e-tests.sh
# Run comprehensive tests
./run-comprehensive-tests.sh
# Test system health
./test-system.sh
# Test TCP connection
./scripts/connection-checker.sh tcp localhost 3031
# Test HTTP endpoints
./scripts/connection-checker.sh http localhost 3030
# Start all services
./scripts/docker-manager.sh start all
# Start specific service
./scripts/docker-manager.sh start main-app
./scripts/docker-manager.sh start connection-tracker
# Stop all services
./scripts/docker-manager.sh stop all
# Check service status
./scripts/docker-manager.sh status
# View logs
./scripts/docker-manager.sh logs main-app
./scripts/docker-manager.sh logs connection-tracker
# Start infrastructure (Kafka, Redis)
docker-compose -f config/docker/infrastructure/docker-compose.yml up -d
# Start main application
docker-compose -f services/main-app/docker-compose.yml up -d
# Start connection tracker
docker-compose -f services/connection-tracker/docker-compose.yml up -d
# Start web interface
docker-compose -f apps/web-interface/docker-compose.yml up -d
# Rebuild containers
docker-compose build --no-cache
verse-proxy/
├── libs/ # Shared libraries
│ ├── socket/ # TCP socket library
│ ├── logger/ # Logging utilities
│ ├── protocol/ # Protocol handling (Kafka-based)
│ ├── utils/ # Common utilities
│ └── redis/ # Redis utilities
├── services/ # Microservices
│ ├── main-app/ # Main application service
│ │ ├── docker-compose.yml # Main app Docker config
│ │ └── Dockerfile
│ ├── connection-tracker/ # Connection tracking service
│ │ ├── docker-compose.yml # Connection tracker Docker config
│ │ └── Dockerfile
│ └── kafka-logger/ # Kafka logging service
├── apps/ # Applications
│ └── web-interface/ # Web testing interface
│ ├── docker-compose.yml # Web interface Docker config
│ ├── index.html # Main web page
│ ├── script.js # Frontend JavaScript
│ ├── docs.html # This documentation page
│ └── connection-tracker-websocket.js # WebSocket service
├── config/ # Configuration files
│ ├── docker/ # Docker configurations
│ │ └── infrastructure/ # Shared infrastructure
│ └── env/ # Environment configurations
├── scripts/ # Build and deployment scripts
│ ├── docker-manager.sh # Docker service management
│ ├── connection-checker.sh # Connection testing utility
│ ├── deploy.sh # Deployment script
│ └── test/ # Test scripts
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── run-all-e2e-tests.sh # E2E test runner
├── run-comprehensive-tests.sh # Comprehensive test runner
├── test-system.sh # System health tester
├── CLAUDE.md # AI assistant guidance
└── package.json # Root package.json (workspace)
./scripts/docker-manager.sh status./scripts/docker-manager.sh stop allws://localhost/connection-tracker./scripts/docker-manager.sh status./scripts/connection-checker.sh http localhost 3030./scripts/connection-checker.sh tcp localhost 3031curl http://localhostcurl http://localhost:8082curl -I http://localhost/connection-tracker (should return 426)redis-cli ping💡 Tip: Use ./scripts/connection-checker.sh for reliable TCP/HTTP testing without hanging!
docker-compose build --no-cachecolima restart (macOS)./scripts/docker-manager.sh logs [service]docker system prune -a to clean up unused containersThe Connection Checker is a robust utility for testing TCP and HTTP connections without hanging. It's essential for both local development and remote deployment testing.
Key Features:
# Test TCP connections (e.g., Wialon socket server)
./scripts/connection-checker.sh tcp localhost 3031
# Test HTTP connections (e.g., main app server)
./scripts/connection-checker.sh http localhost 3030
# Test with custom timeout (default is 5 seconds)
./scripts/connection-checker.sh http localhost 3030 10
# Test remote connections
./scripts/connection-checker.sh tcp test.veevvo.com 3031
./scripts/connection-checker.sh http test.veevvo.com 80
nc -z for reliable connection testingcurl with timeout to /health endpointnc (netcat) and curlСистема Verse Proxy - это современное микросервисное решение для тестирования протокола Wialon IPS и обработки сообщений:
Поток сообщений через систему на основе Kafka:
Микросервис Эмулятора Автомобилей симулирует несколько автомобилей, отправляющих сообщения по протоколу Wialon IPS на TCP socket сервер. Каждый автомобиль поддерживает постоянный VIN и отправляет реалистичные данные телеметрии GPS.
#L#VIN;Password // Сообщение входа
#D#DDMMYY;HHMMSS;DDMM.MMMM;N/S;DDDMM.MMMM;E/W;Speed;Course;Height;Satellites;HDOP;Inputs;Outputs;ADC;iButton;Params
#S#DDMMYY;HHMMSS;DDMM.MMMM;N/S;DDDMM.MMMM;E/W;Speed;Course;Height
#B#DDMMYY;HHMMSS;DDMM.MMMM;N/S;DDDMM.MMMM;E/W;Speed;Course;Height;Satellites;HDOP;Inputs;Outputs;ADC;iButton;Params
| Endpoint | Метод | Описание |
|---|---|---|
/api/status |
GET | Получить статус эмулятора и информацию об автомобилях |
/api/start |
POST | Запустить эмулятор автомобилей |
/api/stop |
POST | Остановить эмулятор автомобилей |
/api/restart |
POST | Перезапустить эмулятор автомобилей |
/api/send-message |
POST | Отправить пользовательское сообщение конкретному автомобилю |
/api/health |
GET | Endpoint проверки здоровья |
Планируемое развитие сервиса для хранения данных телеметрии по автомобилям, позволяющего:
| Порт | Сервис | Описание | Доступ |
|---|---|---|---|
| 80 | Веб-интерфейс (Nginx) | Основной веб-интерфейс для тестирования | http://localhost |
| 8080 | WebSocket прокси | Мост WebSocket к TCP | ws://localhost:8080 |
| 8081 | Connection Tracker WebSocket | Мониторинг соединений в реальном времени | ws://localhost:8081 |
| 3030 | Основное приложение (HTTP) | Проверки здоровья и API endpoints | http://localhost:3030 |
| 3031 | TCP Socket сервер | Обработка протокола Wialon IPS | localhost:3031 |
| 9092 | Kafka | Протокол брокера сообщений | Только внутренний |
| 8082 | Kafka UI | Веб-управление темами | http://localhost:8082 |
| 6379 | Redis | Хранение состояния соединений | Только внутренний |
| 2181 | Zookeeper | Сервис координации Kafka | Только внутренний |
#L#123456789012345;password#D#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#S#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#B#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0#C#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0Все сообщения получают подтверждения:
#AL#123456789012345#AL#010120;120000;5544.6025;N;03739.6834;E;35;215;100;8;1.2;0;0;0;0;0
# Установка зависимостей
npm install
# Запуск всех сервисов с Docker
npm run docker:up
./scripts/docker-manager.sh start all
# Запуск основного приложения
npm run start
# Режим разработки с автоперезагрузкой
npm run dev
# Запуск конкретных сервисов
npm run start --workspace=@verse-proxy/connection-tracker
npm run start --workspace=@verse-proxy/main-app
# Запуск всех тестов
npm run test:all
# Запуск E2E тестов
npm run test:e2e
./run-all-e2e-tests.sh
# Запуск комплексных тестов
./run-comprehensive-tests.sh
# Тест системы
./test-system.sh
# Тест TCP соединения
./scripts/connection-checker.sh tcp localhost 3031
# Тест HTTP endpoints
./scripts/connection-checker.sh http localhost 3030
# Запуск всех сервисов
./scripts/docker-manager.sh start all
# Запуск конкретного сервиса
./scripts/docker-manager.sh start main-app
./scripts/docker-manager.sh start connection-tracker
# Остановка всех сервисов
./scripts/docker-manager.sh stop all
# Проверка статуса сервисов
./scripts/docker-manager.sh status
# Просмотр логов
./scripts/docker-manager.sh logs main-app
./scripts/docker-manager.sh logs connection-tracker
# Запуск инфраструктуры (Kafka, Redis)
docker-compose -f config/docker/infrastructure/docker-compose.yml up -d
# Запуск основного приложения
docker-compose -f services/main-app/docker-compose.yml up -d
# Запуск connection tracker
docker-compose -f services/connection-tracker/docker-compose.yml up -d
# Запуск веб-интерфейса
docker-compose -f apps/web-interface/docker-compose.yml up -d
# Пересборка контейнеров
docker-compose build --no-cache
verse-proxy/
├── libs/ # Общие библиотеки
│ ├── socket/ # TCP socket библиотека
│ ├── logger/ # Утилиты логирования
│ ├── protocol/ # Обработка протоколов (на основе Kafka)
│ ├── utils/ # Общие утилиты
│ └── redis/ # Утилиты Redis
├── services/ # Микросервисы
│ ├── main-app/ # Основной сервис приложения
│ │ ├── docker-compose.yml # Docker конфиг основного приложения
│ │ └── Dockerfile
│ ├── connection-tracker/ # Сервис отслеживания соединений
│ │ ├── docker-compose.yml # Docker конфиг connection tracker
│ │ └── Dockerfile
│ └── kafka-logger/ # Сервис логирования Kafka
├── apps/ # Приложения
│ └── web-interface/ # Веб-интерфейс для тестирования
│ ├── docker-compose.yml # Docker конфиг веб-интерфейса
│ ├── index.html # Главная веб-страница
│ ├── script.js # Frontend JavaScript
│ ├── docs.html # Эта страница документации
│ └── connection-tracker-websocket.js # WebSocket сервис
├── config/ # Файлы конфигурации
│ ├── docker/ # Docker конфигурации
│ │ └── infrastructure/ # Общая инфраструктура
│ └── env/ # Конфигурации окружения
├── scripts/ # Скрипты сборки и развертывания
│ ├── docker-manager.sh # Управление Docker сервисами
│ ├── connection-checker.sh # Утилита тестирования соединений
│ ├── deploy.sh # Скрипт развертывания
│ └── test/ # Тестовые скрипты
├── tests/ # Тестовые файлы
│ ├── unit/ # Модульные тесты
│ ├── integration/ # Интеграционные тесты
│ └── e2e/ # End-to-end тесты
├── run-all-e2e-tests.sh # Запуск E2E тестов
├── run-comprehensive-tests.sh # Запуск комплексных тестов
├── test-system.sh # Тестер здоровья системы
├── CLAUDE.md # Руководство для AI помощников
└── package.json # Корневой package.json (workspace)
./scripts/docker-manager.sh status./scripts/docker-manager.sh stop allws://localhost/connection-tracker./scripts/docker-manager.sh status./scripts/connection-checker.sh http localhost 3030./scripts/connection-checker.sh tcp localhost 3031curl http://localhostcurl http://localhost:8082curl -I http://localhost/connection-tracker (должен вернуть 426)redis-cli ping💡 Совет: Используйте ./scripts/connection-checker.sh для надежного тестирования TCP/HTTP без зависания!
docker-compose build --no-cachecolima restart (macOS)./scripts/docker-manager.sh logs [service]docker system prune -a для очистки неиспользуемых контейнеровConnection Checker - это надежная утилита для тестирования TCP и HTTP соединений без зависания. Необходима как для локальной разработки, так и для тестирования удаленного развертывания.
Ключевые особенности:
# Тест TCP соединений (например, Wialon socket сервер)
./scripts/connection-checker.sh tcp localhost 3031
# Тест HTTP соединений (например, основной сервер приложения)
./scripts/connection-checker.sh http localhost 3030
# Тест с пользовательским таймаутом (по умолчанию 5 секунд)
./scripts/connection-checker.sh http localhost 3030 10
# Тест удаленных соединений
./scripts/connection-checker.sh tcp test.veevvo.com 3031
./scripts/connection-checker.sh http test.veevvo.com 80
nc -z для надежного тестирования соединенийcurl с таймаутом к эндпоинту /healthnc (netcat) и curl