2017-11-10 2 views
1

Ich habe eine Website, wo jeder Benutzer mehrere Bestellungen haben kann. Jede Bestellung hat ihren eigenen Status. Ein Hintergrundprozess aktualisiert den Status jeder Bestellung nach Bedarf. Ich möchte den Benutzer in Echtzeit über den Status seiner Bestellungen informieren. Daher habe ich einen API-Endpunkt entwickelt, der alle Bestellungen eines bestimmten Benutzers zurückgibt. Auf der Client-Seite habe ich eine React-Komponente entwickelt, die die Bestellungen anzeigt, und dann wird jede Sekunde eine AJAX-Anfrage an die API durchgeführt, um alle Bestellungen und deren Status abzurufen, und dann wird React automatisch aktualisiert.Live-Updates auf der Website - 1 Ajax pro Sekunde ist schlechte Praxis?

Macht 1 AJAX Anruf pro Sekunde, um alle Bestellungen eines Benutzers eine schlechte Praxis zu bekommen? Was sind andere Strategien, die ich tun kann?

Antwort

1

Ja, ist es. Sie können Socket verwenden, um dies zu erreichen. Werfen Sie einen Blick auf Socket.IO

Edit: Mein Punkt ist, warum AJAX verwenden, um eine Aufgabe zu simulieren, die mit einer Funktion ausgeführt werden kann, die dafür ausgelegt ist? Steckdosen sind nur dafür gemacht, diese Art von Sache zu tun.

Stellen Sie sich vor, wenn Ihr Benutzer zum Beispiel die Internetverbindung verloren hat. Mit Socket.IO können Sie das sehr gut handhaben. Aber ich denke nicht, dass es mit AJAX so einfach sein wird.

Und wenn man über die Skalierbarkeit nachdenkt, ist Socket.IO so konzipiert, dass es mit jedem Transport, den es bewältigt, leistungsfähig ist. Die Art und Weise, wie es auf der Grundlage der möglichen Verbindung auf würdige Weise degradiert, ist großartig und bedeutet, dass Ihr Server so wenig wie möglich überlastet wird, während Sie immer noch so viele Zuschauer wie möglich erreichen.

AJAX wird den Trick machen, aber es ist nicht das beste Design.

+0

Könnten Sie näher ausführen? Warum ist es eine schlechte Übung? – Ivan

+0

Socket ist besser, weil es eine Verbindung basierend auf Ereignis erstellt sendet –

+0

hey @Ivan, redigiert gerade meine Antwort im Gespräch darüber, warum ich mit Sockets und nicht AJAX in dieser Situation gehen würde. –

0

Es gibt keine Lösung für alle Antworten auf diese Frage.

Zunächst ist dies keine Chat-App, eine Verzögerung von weniger als 1 Sekunde ändert nicht die Benutzererfahrung um viel, wenn überhaupt.

Damit lässt uns mit technischen Gründen, es hängt wirklich von vielen Faktoren ab:

Wie viele Benutzer, die Sie (Gesamtlast) haben, wie viele Benutzer gleichzeitig für ihre Bestellungen warten, welche Infrastruktur Sie verwenden, tun Du hast andere wichtige Dinge zu bauen oder möchtest einfach mehr Zeit damit verbringen, Dinge zum Spaß zu programmieren?

Wenn Sie eine Handvoll Benutzer haben, ist nichts falsch daran, Abfragen einmal pro Sekunde durchzuführen, es ist einfach, weniger Wartungsaufwand, und Sie sagten, Sie haben es bereits codiert.

Wenn Dutzende oder mehr gleichzeitige Benutzer auf den Status warten, ist es wahrscheinlich am besten, Websockets zu verwenden.

In Bezug auf die Infrastruktur, zu viele WebSockets sind teuer (einige Cloud-Hosting haben Grenzen für die Anzahl der Sockets), also denken Sie daran, wenn Sie mit dieser Route gehen wollen.

Verwandte Themen