Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Data Plotting ad Alta Velocità

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44

    Data Plotting ad Alta Velocità

    Salve vorrei trovare un sistema per leggere dei dati da file e graficarli velocemente (20/30 volte al secondo) in una pagina HTML/Js.
    Fino ad ora ho fatto così, utilizzando un raspberry pi;
    Sul raspberry è presente un file di testo che viene aggiornato periodicamente con i dati di un sensore;
    Con ajax io prelevo il contenuto del file di testo e con jqplot faccio un grafico; Utilizzando setTimeout faccio in modo che tutto ciò avvenga periodicamente.
    Tutto bene ma ho notato che come velocità di aggiornamento non si riesce ad andare sotto 1 secondo, penso il rallentamento stiamo nel fatto che uso le chiamate ajax ogni volta per recuperare il nuovo dato.
    Qualcuno ha idea/consiglio su come velocizzare il processo?

  2. #2
    Se il problema sono le chiamate ajax, dal client puoi fare ben poco.
    Potresti provare ad attivare la compressione gzip sul server, se non è ancora attiva, di modo da ridurre la quantità di dati che viaggiano dal server al client. Se il file di testo è molto "pesante" dovresti ottenere un miglioramento significativo delle performances.
    Al limite, potresti considerare l'idea di sposarti su un server (o un client) con una larghezza di banda più elevata.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Il file è piccolissimo, 20 byte di dati al massimo. Io credo siano le chiamate ajax ad essere le più lente ma non ne sono per niente sicuro. Più che altro su internet vedo molte pagine con grafici che si aggiornano in tempo reale in modo fluido e prendendo molte misure al secondo quindi pensavo esistesse un modo per avere quella velocità

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,095
    ciao...
    sarei curioso di vedere queste pagine ultra veloci.
    comunque come già ti hanno detto dipende dal server.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Quote Originariamente inviata da tom135 Visualizza il messaggio
    Il file è piccolissimo, 20 byte di dati al massimo. Io credo siano le chiamate ajax ad essere le più lente ma non ne sono per niente sicuro. Più che altro su internet vedo molte pagine con grafici che si aggiornano in tempo reale in modo fluido e prendendo molte misure al secondo quindi pensavo esistesse un modo per avere quella velocità
    Forse le tue chiamate si accavallano.
    Il setTimeout lo hai messo nella success function di $.ajax?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    Non credo perchè il campo async è settato su false quindi le chiamate sono sincrone. $.ajax è dentro una funzione che ritorna il dato prelevato con la chiamata.

    codice:
    function getSensVal(channel) { //ritorna il valore di un solo canale (ricevuto in input)  
    	 var tmp = null;
        $.ajax({
            'async': false,
            'type': "GET",
            'url': "tmp/adsData.txt",
            'success': function (data) {
                tmp = data;
            }
        });
    	var ris = tmp.substring(1,tmp.length-1).split(",");	
    	return ris[channel]; 
     };
    getSenseVal è a sua volta dentro un altra funzione e quest'ultima ha dentro il setTimeout, questo perchè nel mezzo vengono fatte altre operazioni ai dati e mi è comodo avere il codice diviso in funzioni

  7. #7
    Le chiamate ajax sincrone sono state deprecate, anche in jQuery.

    Da come hai hai descritto il flow dei dati penso proprio che le chiamate si accavallino. Usa una funzione ricorsiva per recuperare i dati del sensore, metti il setTimeout nella success function.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    44
    ok proverò grazie!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.