[PYTHON] [Ecriture] Je souhaite afficher les variables utilisées dans le programme côté serveur en temps réel sur le navigateur et les mettre à jour.

Je suis sur le point d'écrire, mais je suis resté coincé en chemin ... Vous pouvez le fermer sans le publier sous forme de brouillon ...

La raison pour laquelle je suis resté bloqué est que je comprends que WebSocket démarre la communication du côté client vers le serveur à tout moment, mais je ne sais pas comment communiquer du côté serveur vers le client à tout moment ...

Pour le moment, voici des enquêtes préliminaires

Le mécanisme qui réalise la communication bidirectionnelle entre le navigateur et le serveur s'appelait autrefois polling avec JavaScript ou comète ... Récemment, je ne vois pas souvent le mot Websocket.

Pour une présentation générale de la technologie de communication bidirectionnelle, reportez-vous à ce qui suit

Et l'autre jour, j'ai fait une implémentation côté client de Websocket

Ce que je veux faire cette fois, c'est comme titre, et je vais l'implémenter moi-même à la fois côté serveur et côté client, alors étudiez à partir de 1 ...

Après avoir examiné diverses choses, j'ai pu comprendre rapidement ce qui suit

La compréhension ci-dessus s'est approfondie, le cas échéant, du côté client ...

Une instance de WebSocket en JavaScript dans l'implémentation côté navigateur / HTML + JavaScript? Pour décrire le comportement / comportement lors de la réception d'un message du serveur

Ainsi, côté serveur, une implémentation qui envoie un message lorsque le nombre de clients augmente a été décrite comme un exemple.

Ce que je veux faire, c'est autoriser le côté serveur à envoyer un message à tout moment, et le côté client actualise l'affichage à l'écran lorsque le message est reçu et implémente également le processus de mise à jour du côté client.

Quelque chose d'un peu difficile a été écrit au début, mais ... Ce qui suit m'a aussi aidé à comprendre comment cela fonctionne.

Docker et uwsgi sont un peu plus d'informations, mais ...

Il semble que l'implémentation côté client puisse être utilisée, WebSocket est démarré lorsque le bouton est cliqué, un message est créé du côté client vers le serveur lorsque la connexion est démarrée, et lorsque le côté serveur reçoit le message, le contenu est directement transféré au client. Reçoit un message du côté serveur et l'affiche à l'invite du côté client

Je ne sais pas quand l'événement onclose côté client se produira ...

Le programme que j'essaie d'intégrer cette fois utilise un cadre appelé responder en Python, donc l'exemple d'implémentation suivant sera utile.

L'implémentation côté serveur est utile

@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]

Le déclencheur lors de l'envoi de données du côté client au serveur est lorsque vous appuyez sur Entrée, qui peut être utilisable

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

    //Envoyer un message lorsque vous appuyez sur la touche Entrée
    if (e.keyCode == 13) {
      ws.send(textbox.value);
      textbox.value = "";
    }
  });
}

Donc, après avoir fait des recherches jusqu'à présent, j'ai réalisé que je ne connaissais même pas le dessin de page simple avec répondeur en premier lieu, alors j'ai également recueilli des informations à ce sujet.

Ce n'est pas seulement un dessin de page, mais ce qui suit est beaucoup de référence

Recommended Posts

[Ecriture] Je souhaite afficher les variables utilisées dans le programme côté serveur en temps réel sur le navigateur et les mettre à jour.
Je veux afficher la progression en Python!
Je veux remplacer les variables dans le fichier de modèle python et le produire en masse dans un autre fichier
J'ai essayé d'illustrer le temps et le temps du langage C
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
Je ne voulais pas écrire la clé AWS dans le programme
[Selenium] Je souhaite afficher le navigateur en appuyant sur le pilote du système d'exploitation hôte à partir de WSL
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
J'ai essayé de décrire le trafic en temps réel avec WebSocket
Je souhaite utiliser l'environnement de bureau d'Ubuntu même sur Android pour le moment (entrée version japonaise de Termux dans l'environnement de bureau)
Pour le moment en utilisant FastAPI, je veux montrer comment utiliser l'API comme ça dans swagger
Je souhaite séparer le traitement entre le temps de test et l'environnement de production
[Google Colab] Je souhaite afficher plusieurs images côte à côte dans une vignette
Pour la première fois dans Numpy, je vais le mettre à jour de temps en temps
Je veux afficher la barre de progression
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Lisez le fichier csv et affichez-le dans le navigateur
Je veux écrire en Python! (3) Utiliser des simulacres
Exécuter une commande sur le serveur Web et afficher le résultat
Je veux utiliser le jeu de données R avec python
Je veux absorber la différence entre l'instruction for sur la matrice Python + numpy et l'instruction Julia for
Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console
Je souhaite utiliser l'environnement de bureau d'Ubuntu sur Android pour le moment (version Termux)
Je souhaite utiliser l'environnement de bureau d'Ubuntu sur Android pour le moment (version UserLAnd)
Je veux déplacer le sélénium pour le moment [pour mac]
Afficher les nombres et les caractères affectés aux variables dans l'impression python
J'ai essayé de résumer le code souvent utilisé dans Pandas
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
J'ai essayé de résumer les commandes souvent utilisées en entreprise
Je veux connaître la nature de Python et pip
Je veux rendre le type de dictionnaire dans la liste unique
Je veux compter des valeurs uniques dans un tableau ou un tuple
Je souhaite mapper le code EDINET et le numéro de valeur
Pour désactiver le cache du navigateur sur le serveur HTTP simple de Python
Je veux aligner les nombres valides dans le tableau Numpy
Je veux que Sphinx soit pratique et utilisé par tout le monde
Je veux créer un Dockerfile pour le moment.
Je veux créer un histogramme et superposer la courbe de distribution normale dessus. édition matplotlib
Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python