Création d'une application AngularJs temps réel =============================================== ![category](web) ![tag](flask) ![tag](python) ![tag](javascript) ![tag](angularjs) Il est parfois utile d'avoir une application temps réel. Cette notion signifie qu'on va obtenir une information dès qu'elle sera mise à jours. Un exemple concret est d'obtenir l'heure via un serveur. Donc nous avons comme élément: - une IHM angular js qui affiche l'heure - un serveur qui fournit une API donnant l'heure (écrit en python avec le framework Flask) Une boucle infinie ------------------ Il s'agit de la solution la plus simple: on lance une boucle qui toutes les n millisecondes va demander au serveur l'heure qui l'est. Le principal défaut de cette méthode est la boucle elle même: on demande une info même si elle n'a pas changé (ce qui n'est pas le cas avec l'heure). On réalise alors un grand nombre de requuêtes qui dans le cas de l'utilisation de nombreux clients peut rendre le serveur inopérent par faute de ressource. IHM ~~~ fichier index.html ```html Test
{{ mytime }}
``` fichier app.js ```javascript var app = angular.module("MyAppli", []); // add constant app.constant("API_MYTIME", "http://localhost:5000/mytime"); // add controler app.controller('AppController', function($scope, $http, API_MYTIME, $timeout) { $scope.getTime = function() { $http.get(API_MYTIME). success(function(data, status, headers, config) { $scope.mytime = data[0]; }). error(function(data, status, headers, config) { $scope.mytime = 'error'; }); $timeout($scope.getTime, 1000); }; $scope.getInit = function() { $scope.getTime(); }; // init data $scope.getInit(); }); ``` Serveur python ~~~~~~~~~~~~~~ fichier server.py ```python from flask import Flask from flask import json from flask.ext.cors import CORS import datetime import time app = Flask(__name__) cors = CORS(app) @app.route('/mytime', methods = ['GET']) def api_mytime(): now = datetime.datetime.now() return json.dumps([now.strftime("%Y/%m/%d %H:%M:%S")]) if __name__ == '__main__': app.run() ``` ```note pour lancer le serveur python il suffit de lancer la commande python server.py ``` Utilisation de websocket ~~~~~~~~~~~~~~~~~~~~~~~~ voir https://github.com/vinceprignano/chatapp