Websocket - firefox - Node
Tweet me!
Comme toujours, lorsque je n'arrive pas à faire un truc, je cherche et je trouve du moins j’essaie de trouver. Actuellement, j'ai un soucis avec les websockets et Firefox car Firefox a une latence lors de la déconnexion d'un utilisateur (de 20 secondes). Je me permet donc de contacter Paul Rouget via Twitter car d'après ce que j'ai pu comprendre c'est le pionner dans le monde fabuleux de Firefox donc j'en déduit qu'il pourra m'aider ou me mettre sur le chemin d'une solution contraite ou du moins chercher le comment du pourquoi. Voilà les réponses que j'ai eu :
@wubart Assure toi que ce ne soit pas un bug coté server (impl. version 0.76)
@wubart J'ai toujours pas compris ton bug en fait. Fais moi un reduced test case, et je pourrais t'aider.
@wubart Je ne vais pas débugger ton PHP. Ce que je peux te dire, c'est que la déconnexion fonctionne très bien ici avec mon server node.
En gros c'est de mon cote que vient le problème et qui produit le non fonctionnement de mon programme mais que tout va bien du coté de Firefox. OK je veux bien l'admettre, donc je suis son conseil et j'installe et configure un serveur Node (qui est très bien d'ailleurs). Bien entendu pour faire la par des choses, je n'utilise pas mon code mais une simple potion de code qui ne fait qu'une connexion et envois une petite phrase.
<script type="text/javascript">
var connect = function() {
if (window["WebSocket"]) {
conn = new WebSocket("ws://localhost:8000/test");
conn.onmessage = function(evt) {
log(evt.data);
};
conn.onerror = function() {
log("error");
};
conn.onclose = function() {
log("onclose");
};
conn.onopen = function() {
log("opened");
};
}
};
function test()
{
conn.send("test message");
}
window.onload = connect;
window.onunload = function() { conn.close(); };
</script>
<input type="button" value="test" onClick="test()"/>
Et on peut pas dire que les résultats soient concluant voir identique d'avec mon ancien serveur PHP. Mais pour mieux comprendre, j'ai encore fait une petite vidéo :
Donc pour résumer, mon jeu proposera le système de websocket pour voir les autres joueurs se balader sur les cartes mais uniquement sur Chrome, Safari et Opéra (mais pour opéra je dois trouver une solution car il est réactif cela étant il déconnecte correctement mais si on refresh la page il connecte correctement et ensuite il déconnecte l'ancienne session va savoir pourquoi)
PS : je tiens à remercier @paraboul qui bosse sur le projet APE
@wubart Simplement parce que je pense que ton server WS envois le close au niveau TCP et non une WS close frame.
| < Précédent | Suivant > |
|---|
Commentaires
Antoine G.
voici le contenu de mon mail :
Citer :
Pour ma part je pense qu'un jeu ne peux pas présenter des fonctionalités différentes en fonction du navigateur, s'il ne peut pas les assurer partout de la même manière, il ne faut pas les implémenter, enfin c'est mon avis...
Et en jouant sur la fenêtre du timeout des sockets ?
Dans ton php.ini, ya un paramètre du type (en sec)
default_socket_ timeout = x
L'idée est de mettre un petit timeout et de "rafraichir la session" avec un timer côté client qui fait appel au serveur pour lui signifier qu'il est toujours actif
Je testerai tes scripts dans la journée pour essayer de donner un coup de main car je suis pris là a++
ps : décidément ton projet est trop prenant. J'ai testé sous firefox 4 w32, XAMPP, avec tes scripts sur localhost et la deconnexion est immédiate sous firefox. A regarder de plus prêt ce soir..
S’abonner au flux RSS pour les commentaires de cet article.