Erweiterungen
This commit is contained in:
130
STOMP_README.md
Normal file
130
STOMP_README.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user