JeuWeb - Crée ton jeu par navigateur
Tchat en direct - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Tchat en direct (/showthread.php?tid=366)

Pages : 1 2 3 4 5 6 7 8


RE: Tchat en direct - niahoo - 06-01-2011

ok merci.. hmm bon je vais mettre du temps à déchiffrer ça :]


RE: Tchat en direct - Argorate - 09-01-2011

j'avoue qu'un tuto en francais simplifié serait pas de refus dans ce genre de truc Smile


RE: Tchat en direct - Sephi-Chan - 09-01-2011

Je rédigerai un tel article demain et je fournirais une application de démonstration.


Sephi-Chan


RE: Tchat en direct - Viciousity - 09-01-2011

Bon pour vous éclaircir un peu,

Quand vous utilisez un service comme PubNub ou BeaconPush (qui selon moi est une des meileures solutions pour ce genre de service) vous établissez une connexion CONTINUE avec un serveur distant.

Qu'est ce que continue ?
Dans du javascript classique, si vous faites un refresh, vous avez une connexion qui s'établit pour récupérer une donnée, puis qui se ferme, pour ensuite se réouvrir, récupérer la données, se refermer, etc ...
Avec les services de websocket, vous mettez en place une connexion continue et permanente (tant que le broswer est ouvert), il n'y a donc pas de temps de rafraîchissement ni d'interruptions.

En quoi est-ce mieux le continu, je pourrais faire pareil en ajax en rafraîchissant sur de tous petits laps de temps (400ms par exemple), alors pourquoi?
Simplement car avec une méthode qui reprend des données toutes les 400ms vous aller créer un nombre de requêtes vers votre serveur qui est énorme... (10s = 25 requêtes pour un seul utilisateur Oo, imaginez avec 20 personnes sur le chat...)
Le système du websocket est différent. Imaginez simplement deux joueurs de Ping-Pong. Tant qu'on ne vous envoie pas de balle, vous ne pouvez pas la renvoyer... on est bien d'accord Smile
C'est exactement pareil. Quand vous effectuez une requête vers le serveur auquel vous êtes connecté, celui-ci renvoie DIRECTEMENT un message vers toutes les liaisons qu'il a d'établie.
Ce message, vous le récupérer ensuite (pour un site web, via le biais de javascript) et le décoder pour en retirer les informations que vous désirez (par exemple pour un chat, le nom de l'utilisateur et son message) et vous mettez a jour votre interface par le biais de jQuery par exemple ($('#chat').append('<span>+'data.user'+'</span>'+data.message)Wink

En gros, au mieux de taper sans cesse une balle contre un mur afin qu'elle revienne vers vous, vous ne la renvoyer que si on vous l'envoie.

Cela permet d'économiser d'énorme ressources Database<=>navigateur mais surtout de séparer les différentes couches de code (une fonction PHP va envoyer les données vers le serveur PUSH et mettre a jour ses données dans la DB), l'interface va récupérer cette donnée PUSH et mettre a jour l'interface avec. Du coup si quelqu'un mal intentionné envoie une donnée push modifiée sur le serveur, il ne corromps pas votre base de donnée Smile

J'espere avoir été clair, si vous avez des questions Smile


RE: Tchat en direct - Cawrotte - 09-01-2011

J'ai une question : peut-on réaliser cela gratuitement ?
Jusqu'ou (combien de tchatteurs) peut aller un serveur mysql à 10 connexions simultanées ?

Merci d'avance


RE: Tchat en direct - Viciousity - 09-01-2011

Ben Beacon Pusher c'est 33333 Push 'vers le serveur par jour. Donc si ils envoie plus que 33333 message la journées t'es mal barre... autant te dire que c'est largement suffisant Smile
En plus les contraintes vers tes connexions Mysql deviennent presque facultatives vu que les pushs ne vont pas récupérer les messages vers ta base de données.


RE: Tchat en direct - Sephi-Chan - 09-01-2011

Oui, on peut faire ça gratuitement avec des services comme Beacon, PubNub ou Pusher.

Ensuite, rien à voir avec MySQL : si les messages sont stockés en base de données, ils le sont lors d'une requête asynchrone.
Quand les utilisateurs se connectent au chat, MySQL n'est pas utilisé : les utilisateurs reçoivent les messages, il ne vont pas les chercher. C'est là toute la puissance de la technique.


Sephi-Chan


RE: Tchat en direct - php_addict - 09-01-2011

(09-01-2011, 09:23 PM)Sephi-Chan a écrit : Oui, on peut faire ça gratuitement avec des services comme Beacon, PubNub ou Pusher.

je me permet une question annexe: quel est leur intérêt de proposer gratuitement ce genre de service?


RE: Tchat en direct - Viciousity - 09-01-2011

Se faire de la tune voyons Big Grin
Paradoxalement, ils savent que si jamais ton application a du succès, tu dépassera ton quota et sera donc obliger de leur souscrire un abbonnement ;P


RE: Tchat en direct - NicoMSEvent - 10-01-2011

si 100joueurs envoyent chacun 10 msg vers ces mêmes 100joueurs (les "chat", ça chiffre vite) -> 100 * 10 *100 = 100.000 on à déja 3* le quota max autorisé... ça va vite! Wink
(surtout si le jeu marche bien)