Maison  >  Article  >  développement back-end  >  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

王林
王林avant
2023-05-10 15:34:06975parcourir

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())

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;),
]

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>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer