3.6 KiB
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-KonfigurationMessageController.java- Nachrichtenbehandlungapplication.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:
- Eine WebSocket-Client-Bibliothek verwenden
- Browser-Entwicklertools für WebSocket-Verbindungen nutzen
- Spezialisierte STOMP-Testing-Tools einsetzen
Die Implementierung ist vollständig und bereit für die Integration mit externen Apps.