2016-11-25 7 views
0

Front-end TeilPush-Daten aus Backend (Python) zu JS

Ich habe eine AJAX-Anforderung, die Daten von meinem Backend GET versucht, jede Sekunde verarbeiten.

Wenn Daten vorhanden sind, erhalte ich diese Daten, füge sie meiner HTML-Seite hinzu (ohne erneutes Laden) und ziehe jede Sekunde weitere Daten auf weitere Änderungen.

Back-End-Teil

ich analysieren Web-Seiten pro Minute mit Sellerie.

Extrahieren Sie Daten von ihnen und übergeben Sie sie an ein Array (das ist ein Auslöser für AJAX-Anforderung, dass neue Daten vorhanden sind).

Frage

Es scheint mir, dass es eine andere Lösung für dieses Problem ist.

Ich möchte nicht nach Daten von JS zum Back-End fragen. Ich möchte Daten von Back-End zu JS übergeben, wenn Änderungen vorhanden sind. Aber ohne Seiten neu zu laden.

Wie kann ich das tun?

Antwort

1

Ja, da ist. Sie können Websockets oder SSE (serverseitiges Ereignis) verwenden. Grundsätzlich kommt es auf Ihre spezifischen Bedürfnisse an, aber berücksichtigen Sie:

websocket - Zwei-Wege-Datenfluss. Der Client kann Daten an den Server senden und umgekehrt.

The WebSocket-Protokoll ermöglicht die bidirektionale Kommunikation zwischen einem Client an einen entfernten Host in einer kontrollierten Umgebung nicht vertrauenswürdigen Code ausführen
, der Kommunikation von diesem Code in entschieden hat.

Überprüfen Sie python-websockets-example auf Git für Beispiele von Websockets.

SSE - ein Weg, den Datenfluss (Server -> Client)

Server aktivieren schieben Daten auf Webseiten über HTTP oder mit dedizierten Server-Push-Protokolle, stellt diese Spezifikation die Eventsource-Schnittstelle.

Mithilfe dieser API wird ein EventSource-Objekt erstellt und registriert einen Ereignis-Listener.

Flask example Kolben Beispiel von SSE.

+1

Vielen Dank. Es ist schwer für mich, dieses Wissen aus der Dokumentation zu übernehmen. Ich googelte für Server-Side-Events und es scheint mir die Lösung :) – Snobby

+1

@Snobby Sie sind willkommen. Außerdem wurden Beispiellinks hinzugefügt. – wolendranh

0

Versuch socketio zu verwenden, das Backend ein Ereignis mit Daten über socketio und Frontend erhält laden Sie das Ereignis erstellen und die Daten

i lösen ein ähnliches Problem auf diese Weise. Ich rufe das Backend nur auf, wenn ein Socket-Ereignis vom Backend erstellt wurde.

Sie müssen einen SocketIO-Server mit Nodejs einrichten, irgendwo

Verwandte Themen