# 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 ```javascript // 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 ```javascript 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 ```javascript // 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 ```java @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 ```properties # 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.