Ich benutze Spring/Stomp/Websocket-Framework, um Benutzer von Nachrichten asynchron zu benachrichtigen. Ich habe das erfolgreich gemacht. Allerdings würde ich ACK vom Client erhalten, so dass einige serverseitige Aktionen stattfinden können, wenn dies erledigt ist.stomp Nachricht Bestätigung vom Client
Der Fluss ist etwa so fließt:
- Dienst einen bestimmten Benutzer über eine Entscheidung informiert und aktualisiert einen Datensatz in der DB mit dem Status = „gemeldet“
- -Client die Nachricht empfängt (mit stompClient.subscribe (...))
- Der Client bestätigt, dass die Nachricht empfangen wurde.
Der Dienst "weiß", dass diese Nachricht bestätigt wurde, und aktualisiert den Status in der DB auf "ACK".
stompClient.connect({login:'guest', passcode:'guest'}, function(frame) { setConnected(true); **var headers = {ack: 'client'};** ... stompClient.subscribe('/user/guest/response',function(notification) { //doSomething }), **headers**); }
Im Dienst wird die Nachricht gesendet:
this.messagingTemplate.convertAndSendToUser(user, "/response",msg, map);
Gibt es eine Möglichkeit, den Client ACK auf der Serverseite zu behandeln? Alternativ habe ich versucht, ein
stompClient.send("/app/response/ack/"+messageId);
auf dem Client, die in dem Verfahren zu tun, die das Abonnement behandelt, aber vergeblich.
Kann mir bitte jemand sagen, wie man mit Bestätigungen normalerweise umgehen kann? Ich habe ein paar Tage damit zu kämpfen und alle Gedanken wären sehr hilfreich.
Danke!
Ich könnte mein Problem umgehen, indem ich manuell einen stompClient.send (...) nach Erhalt der Nachricht mache. Das ist nicht das perfekte ACK, das ich verwenden wollte, aber das funktioniert jetzt. Es ist ideal zu wissen, wie ACKS mit dem Spring Stomp ws Framework gehandhabt werden. – myspri