Page 1 sur 1

Tester la vitesse du client

Posté : 30 mai 2013, 14:39
par Lyssorus
Bonjour,

Je poste ça ici parce que je ne sais pas vraiment ou le mettre ^^'

Voilà, je pilote un système mécanique depuis une page web, et j'aimerais que cette page teste en gros, la vitesse de la liaison avec le client.

Explication...

J'ai testé avec un collègue connecté en wifi et apparemment les temps de réponses sont vraiment long.

Imaginons qu'une personne connecté au système lance une action et vois (via la camera) qu'il se passe un truc louche (quelqu'un sur la zone de travail) il faut que l'Arrêt d'Urgence réponde suffisamment vite...

Je voudrai donc, interdire l'accès au commande de la machine si la connexion est trop pourrie ^^'

Est-ce possible ?

Re: Tester la vitesse du client

Posté : 30 mai 2013, 16:54
par Lyssorus
Bonjour ou re,

Je commence à me répondre moi même, peut-être aurez vous des idées pour la suite :)

J'ai trouvé un script qui permet de faire des tests de bande passante (avec la ptite barre et tout :D)

Ma bande passante est retourné sous forme d'une valeur dans la variable debit, ce qui serait bien, c'est que j'arrive à lancer le scripte de test de BP à l'ouverture de la page, que j'arrive à extraire debit, et à n'autoriser la commande que si le débit est correcte. Ou au moins afficher un message qui dirait "Attention ton débit il est pourrie, en cas de pépin, la pomme aura touché le sol depuis longtemps avant que tu ne puisse réagir !" ou alors "L'interface n'est pas faite pour tourner sur un minitel :evil: " (désolé je fatigue ^^')

Voilà je cherche encore mais je ne vois pas trop comment faire ça.

Et ce que je dois mettre mon scripte dans la même page, ou dans un autre et l'appeler au début puis retourner la valeur et faire mon test sur la page :/

Je ne sais pas.

Ou carrément, avez vous d'autres idées qui seraient peut être bien meilleurs ? :p

Merci

Re: Tester la vitesse du client

Posté : 30 mai 2013, 17:40
par ghost5922
Re,

il suffi de lancer la fonction au chargement de la page puis faire un if si debit < xxx redirection sinon on continue

poste ton code cela sera plus simple :)

Re: Tester la vitesse du client

Posté : 31 mai 2013, 07:57
par Lyssorus
Bonjour,

Alors voici à quoi ressemble le script.

[javascript]
<script type="text/javascript">
function AJAXRequest(page,retfonc,startload,progress,methode,data) {
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
if (data=="")
data=null;
if(methode == "GET" && data != null) {
page += "?"+data;
data = null;
}
xhr_object.open(methode, page, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var RetAjax=xhr_object.responseText;
eval(retfonc+'(RetAjax);');
}
if(xhr_object.readyState == 1) {
eval(startload+'();');
}
if(xhr_object.readyState == 3) {
var RetAjax='';
if (!document.all)
var RetAjax=xhr_object.responseText;
eval(progress+'(RetAjax);');
}
}
if(methode == "POST")
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr_object.send(data);
}

function testBp() {
avant=new Date();
avant=avant.getTime();
AJAXRequest(Fichier,"ApresAjax","StartAjax","ProgressAjax","GET",avant);
}


function StartAjax() {
document.getElementById('loading_bar').style.width="0px";
}
function ProgressAjax(v) {
if (v=='')
var percent=parseInt(document.getElementById('loading_bar').style.width)+10;
else
var percent=Math.round((v.length*parseInt(document.getElementById('loading').style.width))/TailleImg,0);
document.getElementById('loading_bar').style.width=percent+"px";
}
function ApresAjax(v) {
document.getElementById('loading_bar').style.width=document.getElementById('loading').style.width;
apres=new Date();
apres=apres.getTime();
duree=apres-avant;
debit=Math.round( (TailleImg/(apres-avant) ) *10 ) /10;
document.getElementById('resultBp').innerHTML="duree="+duree+"ms debit="+debit+"Ko/s";
}

var avant;
var TailleImg=102936;
var Fichier="GappRPstopyel.jpg";


</script>
[/javascript]

Et le petit bout de code html qui va avec
<body onload="testBp()">
<div id="loading" style="display:block;height:50px;width:300px;border:1px solid #000;overflow:hidden">
	<div id="loading_bar" style="display:block;height:50px;width:0px;background:#0000CD">
 
	</div>
</div>
<div id="resultBp"></div>
<a href="javascript:testBp();" style="display:block;border:1px solid #000;background:#efefef">Tester la bande passante</a>

</body>

Alors dans ma page d'index, est ce que je peux faire un

<body onload="BP.php"> ?? BP.php étant la page du script, et comment je retourne la réponse du test ?

Ou alors je met tout le script dans mon index ? :p

Re: Tester la vitesse du client

Posté : 31 mai 2013, 08:29
par ghost5922
Bonjour,

tu prend un script trop complet juste pour obtenir le debit regarde ici

http://www.supportduweb.com/scripts_tut ... cript.html

plus simple :)

Re: Tester la vitesse du client

Posté : 31 mai 2013, 08:41
par Lyssorus
Ok d'ac' effectivement c'est plus simple.

Bon j'arrive à faire le test au chargement de la page, c'est cool :p

Maintenant à ton avis, je fait une redirection vers un page qui dit "t'es trop lent achète toi des rollers en forme de lévrier" ou je fait afficher une texte ou une image à la place de tout le reste ?

Re: Tester la vitesse du client

Posté : 31 mai 2013, 09:12
par Lyssorus
Bon pour l'instant je fais ça :

[javascript]
if(vitesse<56){
alert("Votre connexion est trop lente, c'est un risque pour les personnes ainsi que le matériel.");
}
[/javascript]

Ça semble plaire à mon boss :)

Par contre j'ai encore une question... Quelqu'un aurait-il une méthode pour ralentir ma connexion. J'aimerais savoir à quel débit minimum je peux aller avant d'être vraiment dangereux ^^'

Merci :)

Re: Tester la vitesse du client

Posté : 31 mai 2013, 10:20
par ghost5922
Re,

je pense que tu devrai mettre le tous dans un div avec un id cache et si le debit et supérieur a 50 la tu affiche le div car si une personne désactive javascript il va pas avoir l'alerte javascript mais directement ton code

en gros

<div id="content" style="display: none;">
ton contenu
</div>

<div id="erreur">Votre débit et inférieur a 50 ou javascript et désactiver</div>

après si cela te convient ;)

pour le debit regarde sur google mais avec un routeur ou proxy cela doit être possible

Re: Tester la vitesse du client

Posté : 31 mai 2013, 10:29
par Lyssorus
Heuuu par contre comment je lui change le display s'il est supérieur à 50 ^^'

Re: Tester la vitesse du client

Posté : 31 mai 2013, 10:39
par ghost5922
Re,

pour afficher content > document.getElementById("content").style.visibility="visible";
pour cacher erreur > document.getElementById("erreur").style.visibility="hidden";

Re: Tester la vitesse du client

Posté : 31 mai 2013, 10:50
par Lyssorus
Mais si Javascript est désactivé ça va pas me zapper le message d'erreur aussi ?

Édit : À non j'ai rien dis, c'est javascript qui le cache donc si pas de Javascript par de cachage :p

Re: Tester la vitesse du client

Posté : 31 mai 2013, 11:02
par ghost5922
et oui du coup

si javascript activer et débit supérieur on cache le erreur et affiche le contenu

sinon on fait rien donc erreur afficher mais pas le contenu :)

edit : en même temps presque toute tes commandes sont en javascript du coup si pas active le mec fera pas grand chose non plus ^^

Re: Tester la vitesse du client

Posté : 31 mai 2013, 11:07
par Lyssorus
Oui c'est sur, mais bon autant qu'il sache pourquoi ça ne fonctionne pas :D

Merci bien. :)

Re: Tester la vitesse du client

Posté : 31 mai 2013, 11:15
par ghost5922
Bien sur :)

si ton sujet et réglé merci de l'indique :)

Re: Tester la vitesse du client

Posté : 31 mai 2013, 11:21
par Lyssorus
Et bien du coup je pense que oui c'est bon, je vérifiais juste que tout allait bien et que je n'avais pas d'autres questions :p