Αν μια υπηρεσία μείνει σιωπηλή για λεπτά και ένας proxy λήξει λόγω χρονικού ορίου, επιλέξτε τι πρέπει να λάβει ο πελάτης πριν προσθέσετε byte καρδιοχτύπου. Η παράταση ενός χρονόμετρου μπορεί να βοηθήσει μία αναμονή· το συμβόλαιο απόκρισης καθορίζει ποια πρόοδος είναι έγκυρη.

Σχεδιασμός εφαρμογήςΣυμβόλαιο προόδου
Ασύγχρονη εργασία202 Accepted με αναπαράσταση που περιγράφει την παρακολούθηση, ακολουθούμενη από πεπερασμένα αιτήματα κατάστασης και ρητές καταστάσεις ολοκλήρωσης/αποτυχίας
Ροή Server-Sent EventsContent-Type: text/event-stream και εγγραφές που καταλαβαίνει ο πελάτης SSE

Το 202 δεν υπόσχεται ότι η εργασία θα πετύχει. Για SSE, μια εγγραφή σχολίου μπορεί να μοιάζει έτσι:

: heartbeat

Η άνω τελεία το κάνει σχόλιο και όχι συμβάν εφαρμογής. Οι σημειώσεις σύνταξης της HTML προτείνουν περιοδικά σχόλια περίπου κάθε 15 δευτερόλεπτα απέναντι σε κάποια παλιά συμπεριφορά αδράνειας proxy· αυτό είναι καθοδήγηση, όχι καθολική εγγύηση χρονικού ορίου.

Ολοκληρώστε τις κεφαλίδες και βεβαιωθείτε ότι η εφαρμογή/στοίβα εξυπηρέτησης απελευθερώνει εγγραφές αντί να τις αποθηκεύει τοπικά σε buffer. Τα byte που δεν έχουν σταλεί ακόμη δεν μπορούν να κρατήσουν ενεργό έναν καθοδικό μεσάζοντα.

Μην εισάγετε σχόλια SSE σε συνηθισμένο JSON ή δυαδικό περιεχόμενο. Ένα chunk μηδενικού μήκους HTTP/1.1 τερματίζει ένα chunked σώμα, άρα δεν είναι επαναλαμβανόμενο κενό καρδιοχτύπι.

Διατηρήστε μια προθεσμία λειτουργίας και μια πολιτική ακύρωσης. Μόνο η κίνηση δικτύου δεν δείχνει χρήσιμη πρόοδο εργασίας ή έγκυρο τελικό αποτέλεσμα.

Σχετικά άρθρα