Websockets delay in Chrome

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
Het is misschien niet 100% een programmeervraag, maar ik weet niet goed waar het anders te plaatsen.

Ik heb een ESP8266 die via een websocket datapunten uitstuurt naar een webpagina om realtime data te plotten in een grafiek.

Nu werkt dit goed, alleen lijkt Chrome een enorme vertraging te hebben?
Als ik op mijn scherm IE en Chrome naast elkaar zet dan zit er op Chrome een vertraging van 5-10 seconden.

Vanuit de server side worden dingen wel goed uitgestuurd, want ik gebruik een gyroscoop als sensor en als ik daaraan draai zijn de updates in de grafiek in IE instant, maar in Chrome zit daar dus een serieuze vertraging op. Hoe langer ik de webpagina openlaat, hoe meer de vertraging. Als ik de pagina vernieuw is de delay eerst weer heel even weg.

Plaatje: (tellers bovenaan: links aantal ontvangen messages, rechts gemiddelde delta tijd in ms tussen de messages).

Afbeeldingslocatie: https://preview.ibb.co/gfc9pw/ws_delay.png
Full size

Iemand een idee wat hier aan de hand kan zijn?

De websocket client code:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var socket = new WebSocket('ws://'+document.location.host+'/ws',['arduino']);

var timestamp = 0;
var timestamp_prev = 0;

var debug_time = new Date().getTime();
var debug_time_prev = new Date().getTime();
var debug_mean = 0;
var debug_num = 0;

socket.onmessage = function (event) 
{
    debug_num++;
    debug_time = new Date().getTime();
    debug_mean = ((debug_num-1)*debug_mean + (debug_time-debug_time_prev))/debug_num;
    debug_time_prev = debug_time;

    $('.subtitle').html(debug_num.toString() + ' ' + debug_mean.toString());

    var data = JSON.parse(event.data);
               
    if (data.id == "heading")
    {
        timestamp = data.time;
        update_chart(chart_1,timestamp,Number(data.value));
        if ((timestamp-timestamp_prev)>40)
        {
            chart_1.update(0);
            timestamp_prev = timestamp;
        }
        
    }
};

[ Voor 13% gewijzigd door Bio op 29-12-2017 16:00 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Is een bekende bug: https://bugs.chromium.org/p/chromium/issues/detail?id=456476
Misschien kun je eromheen werken met een webworker thread?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
Juup schreef op vrijdag 29 december 2017 @ 16:02:
Is een bekende bug: https://bugs.chromium.org/p/chromium/issues/detail?id=456476
Misschien kun je eromheen werken met een webworker thread?
Was die pagina al tegengekomen, maar Ik heb het hier over ruwweg 8 Kbps aan data, in die link gaat het om 170 Mbps?

Webworkers zijn een nieuw concept voor mij. Ik zal me eens inlezen.

[ Voor 9% gewijzigd door Bio op 29-12-2017 16:10 ]


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
Iemand nog een suggestie?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat heb je geleerd uit het inlezen over webworkers?

Want in basis zou ik zeggen : Begin eens bij de basis, close binnen chrome eens alle tabs en extensies, kijk dan eens via taskmanager het cpu-gebruik van chrome na en als dat hoog is sluit dan eens andere apps etc.

Ik bedoel in de link die gepost is staat zo ongeveer letterlijk dat de main thread niet genoeg prio krijgt. En jij gooit even 18 tabbladen open met allerlei random contect?