Je développe une application web en utilisant asp.net mvc, et j'ai besoin de faire un chronomètre (avec 30 secondes préprogrammées pour démarrer à un certain moment) sur client- D'ailleurs, en utilisant l'heure du serveur, l'horloge du client ne peut pas être l'horloge du serveur. Donc, j'utilise Jquery pour appeler le serveur par JSON et obtenir le temps, mais il est très contrainte parce que chacun seconde, j'appelle le serveur pour obtenir du temps, quelque chose comme ceci:Il est temps de démarrer un compteur côté client
$(function() {
GetTimeByServer();
});
function GetTimeByServer() {
$.getJSon('/Home/Time', null, function(result) {
if (result.SecondsPending < 30) {
// call another function to start an chronometer
} else {
window.SetTimeout(GetTimeByServer, 1000); //call again each 1 second!
}
});
}
Il fonctionne très bien, mais quand j'ai plus de 3 ou 4 appels comme ça, le navigateur fonctionne lentement mais fonctionne! Je voudrais savoir, comment améliorer plus performace côté client, ou s'il y a un moyen de le faire ... est-il possible pour le client d'écouter le serveur comme un "socket" pour savoir si le chronomètre doit démarrer ...
PS: Désolé pour mon anglais!
grâce Vive
Le temps passe-t-il progressivement différemment sur le client? JavaScript a un objet 'Date', pourquoi ne pouvez-vous pas le définir sur le chargement de la page et l'heure du client? –
Note: cette approche fera frire votre serveur dès que vous aurez plus de 20 utilisateurs simultanés (peut-être plus tôt) - il ne s'agrandit pas bien; De plus, la latence de transfert (variation) supprimera toute illusion de précision temporelle. – Piskvor
Piskvor, et vous suggérez quelque chose que puis-je faire pour améliorer la performance? –