[PYTHON] [Schreiben] Ich möchte die im Programm verwendeten Variablen auf der Serverseite in Echtzeit im Browser anzeigen und aktualisieren.

Ich bin im Begriff zu schreiben, aber ich blieb auf dem Weg stecken ... Es ist in Ordnung, es zu schließen, ohne es als Entwurf zu veröffentlichen ...

Der Grund, warum ich nicht weiterkam, ist, dass ich verstehe, dass WebSocket jederzeit die Kommunikation von der Clientseite zum Server startet, aber ich weiß nicht, wie ich zu irgendeinem Zeitpunkt von der Serverseite zum Client kommunizieren soll ...

Im Folgenden sind vorerst vorläufige Erhebungen aufgeführt

Der Mechanismus, der die bidirektionale Kommunikation zwischen dem Browser und dem Server realisiert, wurde früher als Polling mit JavaScript oder Komet bezeichnet. In letzter Zeit sehe ich das Wort Websocket nicht oft.

Ein allgemeiner Vortrag über bidirektionale Kommunikationstechnologie finden Sie im Folgenden

Und neulich habe ich eine clientseitige Implementierung von Websocket durchgeführt

Was ich dieses Mal tun möchte, ist der Titel, und ich werde ihn sowohl auf der Serverseite als auch auf der Clientseite selbst implementieren. Studieren Sie also von 1 ...

Nachdem ich mir verschiedene Dinge angesehen hatte, konnte ich Folgendes schnell verstehen

Das obige Verständnis hat sich auf der Kundenseite eher vertieft ...

Eine Instanz von WebSocket in JavaScript in der Implementierung auf der Browser- / HTML + JavaScript-Seite? Beschreibung des Verhaltens beim Empfang einer Nachricht vom Server

Auf der Serverseite wurde eine Implementierung als Beispiel beschrieben, die eine Nachricht sendet, wenn die Anzahl der Clients zunimmt.

Ich möchte der Serverseite erlauben, jederzeit eine Nachricht zu senden, und die Clientseite aktualisiert die Bildschirmanzeige, wenn die Nachricht empfangen wird, und implementiert auch den Aktualisierungsprozess von der Clientseite.

Am Anfang wurde etwas Schwieriges geschrieben, aber ... Das Folgende hat mir auch geholfen zu verstehen, wie es funktioniert.

Docker und Uwsgi sind ein paar zusätzliche Informationen, aber ...

Es scheint, dass die Implementierung auf der Clientseite verwendet werden kann. WebSocket wird gestartet, wenn auf die Schaltfläche geklickt wird. Beim Starten der Verbindung wird eine Nachricht von der Clientseite zum Server erstellt. Wenn die Serverseite die Nachricht empfängt, wird der Inhalt direkt an den Client übertragen Empfängt eine Nachricht von der Serverseite und zeigt sie an der Eingabeaufforderung auf der Clientseite an

Ich weiß nicht, wann das Onclose-Ereignis auf der Clientseite eintreten wird ...

Das Programm, das ich dieses Mal einbetten möchte, verwendet ein Framework namens Responder in Python. Das folgende Implementierungsbeispiel ist daher hilfreich.

Die serverseitige Implementierung ist hilfreich

@api.route('/ws', websocket=True)
async def websocket(ws):
    await ws.accept()
    key = ws.headers.get('sec-websocket-key')
    clients[key] = ws
    try:
        while True:
            msg = await ws.receive_text()
            for client in clients.values():
                await client.send_text(msg)
    except:
        await ws.close()
        del clients[key]

Der Auslöser beim Senden von Daten von der Clientseite an den Server ist das Drücken der Eingabetaste, was möglicherweise verwendet werden kann

window.onload = function () {
  textbox.addEventListener('keypress', function (e) {

    //Senden Sie eine Nachricht, wenn Sie die Eingabetaste drücken
    if (e.keyCode == 13) {
      ws.send(textbox.value);
      textbox.value = "";
    }
  });
}

Nachdem ich bisher recherchiert hatte, stellte ich fest, dass ich überhaupt nicht über das einfache Zeichnen von Seiten mit Responder Bescheid wusste, und nahm auch Informationen dazu auf.

Es ist nicht nur das Zeichnen von Seiten, sondern das Folgende ist eine Menge Referenz

Recommended Posts

[Schreiben] Ich möchte die im Programm verwendeten Variablen auf der Serverseite in Echtzeit im Browser anzeigen und aktualisieren.
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, die Uhrzeit und das heutige Wetter anzuzeigen
Ich wollte den AWS-Schlüssel nicht in das Programm schreiben
[Selenium] Ich möchte den Browser anzeigen, indem ich den Treiber auf dem Host-Betriebssystem von WSL aus drücke
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich möchte die Desktop-Umgebung von Ubuntu vorerst auch unter Android verwenden (Termux-Version - japanische Eingabe in der Desktop-Umgebung).
Zur Zeit möchte ich mit FastAPI zeigen, wie man eine solche API in swagger verwendet
Ich möchte die Verarbeitung zwischen Testzeit und Produktionsumgebung trennen
[Google Colab] Ich möchte mehrere Bilder nebeneinander in einer Kachel anzeigen
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich möchte die Ergebnisse von% time, %% time usw. in einem Objekt (Variable) speichern.
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Ich möchte R-Datensatz mit Python verwenden
Ich möchte den Unterschied zwischen der for-Anweisung in der Python + numpy-Matrix und der Julia for-Anweisung auffangen
Ich twittere nicht, aber ich möchte tweepy verwenden: Zeigen Sie einfach die Suchergebnisse auf der Konsole an
Ich möchte vorerst die Desktop-Umgebung von Ubuntu auf Android verwenden (Termux-Version)
Ich möchte vorerst Ubuntus Desktop-Umgebung auf Android verwenden (UserLAnd-Version)
Ich möchte vorerst Selen bewegen [für Mac]
Zeigen Sie Zahlen und Zeichen an, die Variablen im Python-Druck zugewiesen sind
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte eindeutige Werte in einem Array oder Tupel zählen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
So deaktivieren Sie den Browser-Cache auf dem einfachen HTTP-Server von Python
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich möchte, dass Sphinx bequem ist und von allen benutzt wird
Ich möchte vorerst eine Docker-Datei erstellen.
Ich möchte ein Histogramm erstellen und die Normalverteilungskurve darauf überlagern. matplotlib edition
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt