Ich habe jetzt schon mehrfach geäußert, dass ich das (ack)poll-System für etwas seltsam umgesetzt halte. Ich kenne das bisher von anderen APIs so, dass lediglich Calls, die (ggf.) asynchrone Antworten nach sich ziehen, Nachrichten triggern die ich manuell bestätigen muss, während hier jeder einzelne API-Call bestätigt werden muss. Was ich aber für besonders problematisch halte: Die Nachricht, die ich per poll abfrage, könnte sich ändern, bevor ich sie mittels ackpoll bestätige. Beispiel:
- Ich starte die Registrierung einer .com-Domain, das passiert nicht in Echtzeit. Ich erhalte die Meldung, dass die Registrierung gestartet wurde.
- Ich frage mittels poll() die Nachricht ab, die Meldung ist noch dieselbe.
- Die Domainregistrierung war erfolgreich, die oben abgefragte Nachricht wird entsprechend in eine Erfolgsmeldung umgewandelt.
- Durch die Wartezeit von ~1 Sekunde bei jedem API-Call geht mein ackpoll() erst jetzt ein, die Erfolgsmeldung bezüglich der Domainregistrierung wird bestätigt obwohl mein Client noch davon ausgeht, dass die Registrierung noch aussteht.
Mögliche Lösung:
- Jede Antwort vom API gibt eine Message-ID zurück, unter der ich die aktuelle Nachricht im poll()-Array finde.
- Ändert sich die Nachricht, ändert sich auch die Message-ID. Versuche ich, beim ackpoll() die alte Message-ID zu übergeben, gibt es einen Fehler. Dadurch merke ich, dass ich nicht die aktuelle Version der Nachricht kenne.