Maison > développement back-end > Tutoriel Python > Comment utiliser dwebsocket en Python pour obtenir une actualisation en temps réel des données back-end

Comment utiliser dwebsocket en Python pour obtenir une actualisation en temps réel des données back-end

王林
Libérer: 2023-05-10 15:34:06
avant
993 Les gens l'ont consulté

Lors de l'exécution d'une tâche planifiée, nous devons connaître le pourcentage d'exécution ou le retour de données en temps réel. Les méthodes qui peuvent être utilisées à ce moment-là sont

1. Les requêtes Ajax sont adressées au serveur back-end, puis à la page front-end. est partiellement rendu pour obtenir le pourcentage

2. Utilisez webscoket pour les communications à longue connexion Refresh

La méthode d'utilisation d'ajax utilise la fonction d'intervalle pour implémenter les demandes de synchronisation, ce qui ne sera pas expliqué ici. Ajoutez le contenu suivant au fichier views.py

.
from django.shortcuts import render,HttpResponse
from dwebsocket.decorators import accept_websocket
import time,random
import uuid
import json
@accept_websocket
def test_websocket(request):
    cnt=1
    if request.is_websocket():
        while True:
            messages = {
                'time': time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())),
                'server_msg': 'hello%s'%time.time(),
                'client_msg': 'msg%s'%time.time()
            }
            time.sleep(1)
            cnt+=1
            if cnt<=10:
                request.websocket.send(json.dumps(messages))
            else:
                break

def test_websocket_client(request):
    return  render(request,&#39;websocket_client.html&#39;,locals())
Copier après la connexion

settings.py pour ajouter dwebsocket

INSTALLED_APPS = [
'django.contrib.admin',

'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions' ,
'django.contrib.messages',
'django.contrib.staticfiles',
'dwebsocket'
]

le fichier urls.py ajoute des liens pertinents
urlpatterns = [
    path(&#39;test_websocket&#39;, views.test_websocket, name=&#39;test_websocket&#39;),
    path(&#39;test_websocket_client&#39;, views.test_websocket_client, name=&#39;test_websocket_client&#39;),
]
Copier après la connexion

Téléchargez directement le code html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>dwebsocket实践</title>
    <script  src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            // $(&#39;#send_message&#39;).click(
            //     function() {
                var socket = new WebSocket("ws://" + window.location.host + "/test_websocket");
                socket.onopen = function () {
                    console.log(&#39;WebSocket open&#39;);//成功连接上Websocket
                    // socket.send($(&#39;#message&#39;).val());//发送数据到服务端
                };
                socket.onmessage = function (e) {
                    // console.log(&#39;message: &#39; + e.data);//打印服务端返回的数据
                    $(&#39;#messagecontainer&#39;).text(&#39;<p>&#39; + JSON.parse(e.data).client_msg + &#39;</p>&#39;+&#39;<p>&#39; + JSON.parse(e.data).server_msg + &#39;</p>&#39;);
                    // $(&#39;#messagecontainer&#39;).text(&#39;<p>&#39; + JSON.parse(e.data).server_msg + &#39;</p>&#39;);
                };
                socket.onclose=function () {
                    console.log("连接已关闭")
                }
            // });
        });
    </script>
</head>
<body>
    <input type="text" id="message" value="请输入发送消息!" />
    <button type="button" id="send_message">send message</button>
    <h2>接受到消息</h2>
    <div id="messagecontainer">
    </div>
</body>
</html>
Copier après la connexion

Ensuite, nous exécutons le programme

Comment utiliser dwebsocket en Python pour obtenir une actualisation en temps réel des données back-endAprès dix secondes, nous nous déconnectons et obtenons les résultats souhaités

Exigences commerciales Si tel est le cas, nous pouvons modifier notre logique dans notre test_websocket et effectuer le rendu en fonction des résultats renvoyés

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal