[RESOLU] Tester la vitesse du client

Eléphant du PHP | 160 Messages

30 mai 2013, 14:39

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 ?

Eléphant du PHP | 160 Messages

30 mai 2013, 16:54

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

Mammouth du PHP | 619 Messages

30 mai 2013, 17:40

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

Eléphant du PHP | 160 Messages

31 mai 2013, 07:57

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

Mammouth du PHP | 619 Messages

31 mai 2013, 08:29

Bonjour,

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

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

plus simple :)

Eléphant du PHP | 160 Messages

31 mai 2013, 08:41

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 ?

Eléphant du PHP | 160 Messages

31 mai 2013, 09:12

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

Mammouth du PHP | 619 Messages

31 mai 2013, 10:20

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

Eléphant du PHP | 160 Messages

31 mai 2013, 10:29

Heuuu par contre comment je lui change le display s'il est supérieur à 50 ^^'

Mammouth du PHP | 619 Messages

31 mai 2013, 10:39

Re,

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

Eléphant du PHP | 160 Messages

31 mai 2013, 10:50

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

Mammouth du PHP | 619 Messages

31 mai 2013, 11:02

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 ^^

Eléphant du PHP | 160 Messages

31 mai 2013, 11:07

Oui c'est sur, mais bon autant qu'il sache pourquoi ça ne fonctionne pas :D

Merci bien. :)

Mammouth du PHP | 619 Messages

31 mai 2013, 11:15

Bien sur :)

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

Eléphant du PHP | 160 Messages

31 mai 2013, 11:21

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