Files
votianlt/STOMP_README.md
2025-08-18 12:24:09 +02:00

3.6 KiB

STOMP Messaging Integration

Die Anwendung unterstützt jetzt STOMP (Simple Text Oriented Messaging Protocol) für die Kommunikation mit externen Apps über WebSocket-Verbindungen.

Übersicht

Das System bietet folgende STOMP-Funktionalitäten:

WebSocket-Endpunkte

  • /ws - STOMP-Endpunkt mit SockJS-Fallback-Unterstützung
  • /websocket - Reiner WebSocket-Endpunkt ohne SockJS

Nachrichtendestinationen

Eingehende Nachrichten (Client → Server)

  • /app/message - Allgemeine Nachrichten
  • /app/job/status - Job-Status-Updates
  • /app/device/location - Gerätestandort-Updates

Ausgehende Nachrichten (Server → Client)

  • /topic/messages - Broadcast aller allgemeinen Nachrichten
  • /topic/job-updates - Job-Status-Updates für alle Abonnenten
  • /topic/device-locations - Gerätestandort-Updates
  • /topic/broadcasts - System-weite Broadcast-Nachrichten
  • /queue/notifications - Benutzerspezifische Benachrichtigungen

Verwendung für Apps

1. Verbindung aufbauen

// Mit SockJS
const socket = new SockJS('http://localhost:8080/ws');
const stompClient = Stomp.over(socket);

// Oder mit nativem WebSocket
const socket = new WebSocket('ws://localhost:8080/websocket');
const stompClient = Stomp.over(socket);

2. Verbindung herstellen

stompClient.connect({}, function(frame) {
    console.log('Verbunden: ' + frame);
    
    // Nachrichten abonnieren
    stompClient.subscribe('/topic/messages', function(message) {
        console.log('Nachricht erhalten:', JSON.parse(message.body));
    });
});

3. Nachrichten senden

// Allgemeine Nachricht senden
stompClient.send('/app/message', {}, JSON.stringify({
    content: 'Hallo vom App',
    sender: 'MobileApp'
}));

// Job-Status-Update senden
stompClient.send('/app/job/status', {}, JSON.stringify({
    jobId: '12345',
    status: 'IN_PROGRESS',
    progress: 75
}));

// Gerätestandort senden
stompClient.send('/app/device/location', {}, JSON.stringify({
    deviceId: 'device-001',
    latitude: 52.5200,
    longitude: 13.4050,
    accuracy: 10
}));

Backend-Integration

Programmatische Nachrichten senden

@Autowired
private MessageController messageController;

// Benachrichtigung an spezifischen Benutzer
messageController.sendNotificationToUser("username", "Neue Aufgabe verfügbar");

// Broadcast-Nachricht an alle
messageController.sendBroadcastMessage("Systemwartung in 10 Minuten");

Konfiguration

Die STOMP-Konfiguration befindet sich in:

  • WebSocketConfig.java - WebSocket und STOMP-Konfiguration
  • MessageController.java - Nachrichtenbehandlung
  • application.properties - Zusätzliche WebSocket-Einstellungen

Wichtige Konfigurationsparameter

# Nachrichtenpuffergröße
spring.websocket.servlet.max-text-message-buffer-size=8192
spring.websocket.servlet.max-binary-message-buffer-size=8192

# STOMP aktivieren
spring.websocket.stomp.enabled=true

# Heartbeat-Einstellungen
spring.websocket.stomp.heartbeat.outgoing=10000
spring.websocket.stomp.heartbeat.incoming=10000

Sicherheitshinweise

  • WebSocket-Verbindungen verwenden die gleiche Authentifizierung wie die Web-Anwendung
  • Nachrichten werden automatisch mit Zeitstempel versehen
  • Alle Nachrichten werden in JSON-Format verarbeitet

Testing

Zum Testen der STOMP-Funktionalität können Sie:

  1. Eine WebSocket-Client-Bibliothek verwenden
  2. Browser-Entwicklertools für WebSocket-Verbindungen nutzen
  3. Spezialisierte STOMP-Testing-Tools einsetzen

Die Implementierung ist vollständig und bereit für die Integration mit externen Apps.