L'essentiel de Node.js

Envoyer des messages dans le tunnel

Testez gratuitement nos 1251 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Une fois ouvert, le tunnel permet une communication simple, ou sur tous les tunnels en même temps. Ainsi, apprenez à câbler des dialogues plus complexes.
06:13

Transcription

Alors je sais me connecter mais je ne sais pas encore envoyer, ni recevoir. Pour les petits malins qui ont déjà vu qu’effectivement il y a une ligne d’envoi ici, c’est facile. Ça, c’est ce qui nous permet d’envoyer de l’information. Alors, c’est simple d’envoyer de l’information, mais attention ça veut dire quand même que sur le client, vous devez réceptionner cette information. Alors, comment on va faire pour réceptionner de l’info ? Ce n’est pas très compliqué. Il va falloir récupérer de l’information. ws.on ici, et attention on le fait bien après la connexion. Donc vous voyez bien qu’ici je suis à l’intérieur de la connexion. Et je récupère le web socket ici. Donc on, à cet endroit-là. Et là on va lui dire quoi ? Quand tu reçois un message, donc quand tu reçois un message, qu’est-ce que tu fais ? Eh bien, tu vas me renvoyer le message vers le client, vers, d’ailleurs, les clients. Comment je fais pour envoyer un message vers les clients ? Déjà je pourrais me l’envoyer à moi-même. Ça, ce ne serait pas compliqué. Il suffirait simplement de lui dire web socket, « .client.send » et puis je lui renvoie le message. Comme ça il le reçoit. Qu’est-ce qui va se passer du côté en fait du client maintenant ? Alors, du côté du client ici, il faut que je reçoive l’information. Donc il faut également que je vienne câbler à cet endroit-là un onmessage. Et je vais récupérer le message à l’intérieur, comme ça. Et là regardez, on a déjà prévu comment ça allait fonctionner puisqu’on a un printMessage. Donc on peut faire un printMessage comme ça, avec le message à l’intérieur. Ce qui nous permettra, quand on va recevoir un message, de venir travailler avec. Or, bien sûr après, vous pouvez inventer un peu tout et n’importe quoi puisque vous allez bien sûr, pouvoir ici mettre de la logique, si c’est tel message on fait telle chose, etc., etc., etc. Donc là on va retourner ici. On va relancer notre serveur. On va recharger la page. Et puis regardez. On va ajouter de l’info. Alors là ça crie. Pourquoi ça crie ? Parce qu’il nous dit que Send n’est pas défini. Alors le souci qu’on va avoir ici, c’est que le web socket qu’on a à cet endroit-là, si je lui mets client comme ça, on ne va pas vouloir envoyer. Par contre si je lui mets, regardez, juste send, comme ça, là il va être en capacité effectivement de recevoir de l’info. Donc si vous devez travailler sur un seul client, vous utiliserez juste send. Alors, le problème qu’on va avoir aussi, c’est qu’il nous dira que, regardez ici, message n’est pas défini. Alors, regardez bien, effectivement, je me suis trompé, j’ai mis messade. Il faut mettre message. Donc là, on recharge la page, et à chaque fois, regardez, il va nous ajouter un objet message event. Ce n’est pas super parce que cet objet-là, il n’est pas intéressant pour nous. On va le console.log(message), et on va voir exactement ce qui se trouve à l’intérieur. Ce sera plus intéressant pour debugger. Maintenant on va se rendre en console, et on voit qu’effectivement un message event, c’est un message event avec tout un tas d’informations. Il y a un type dessus, et surtout il y a de la data. Ce qui va nous intéresser, nous, ce n’est pas le message dans sa globalité, mais c’est plutôt ici message.data qu’on va vouloir utiliser. En faisant ça et en rechargeant, regardez ça y est, on a quelque chose qui fonctionne. Et on peut taper des informations. Le serveur, bon bah, les reçoit et nous les renvoie instantanément. Il y a bien un échange qui est fait entre les deux. C’est comme ça que ça va fonctionner à chaque fois. Maintenant si je veux broadcaster. Le broadcast, ça veut dire utiliser tous les clients qui sont connectés en même temps sur la page, et leur envoyer le message à tous. Après bien sûr, on va lui tester pour voir ce que ça donne. Alors, comment je fais pour envoyer un message à tous les clients connectés ? Bah, c’est assez simple en réalité. Il suffirait tout simplement de venir itérer les différents clients. Donc wss, attention, .clients.foreach. Là on va faire un foreach de chaque client. On peut l'utiliser en format court, client. Et pour chaque client, qu’est-ce qu’on va faire ? On va renvoyer le message. Et le message comment on va l’envoyer ? Simplement en faisant client.send. En fait le client qui se trouve là, c’est un ws connecté sur le serveur global. Donc il suffira juste d’envoyer le message à cet endroit-là, et ce sera largement suffisant pour faire un broadcast chez tout le monde. Alors attention, là vous devez relancer, c’est obligatoire, et recharger la page. On va vérifier que ça fonctionne bien. Pas de problème. Maintenant on va aussi vérifier que ça fonctionne bien dans plusieurs clients en même temps. Donc, pour faire ça, on va ouvrir une autre fenêtre ici. Et puis on va encore en ouvrir une autre ici. Là on a trois fenêtres de connectées. Ce qui veut dire que si j’écris à cet endroit-là, je reçois. Mais les autres aussi, et instantanément. Pour vous prouver que c’est bien instantané, le mieux ce serait de sortir les fenêtres comme ça. Et puis d’essayer de les arranger de telle sorte à ce que vous puissiez voir qu’effectivement de l’un à l’autre, ça communique. Et là on vient de créer en quelques instants, eh bien, un chat. Et ce chat il est déjà fonctionnel, c'est-à-dire que là, on pourrait être à trois sur des machines différentes sur internet, et se parler instantanément en live directement. Vous voyez que ce n’est pas complexe. Il suffit simplement d’utiliser le broadcast qui est une possibilité de notre serveur pour travailler et pour s’envoyer des messages instantanément partout. Alors, il y a un autre truc intéressant évidemment. C’est qu’ici, si je déconnecte le serveur, je déconnecte absolument tout le monde. Regardez, tout le monde est déconnecté. Donc on a la possibilité de travailler sur un seul client ou plusieurs clients à la fois. Et vous voyez que ce n’est pas très compliqué à mettre en place réellement. Il suffit simplement de travailler sur le on, qui est un évènement en fait que l’on va réceptionner, et ici à cet endroit-là, d’envoyer le message avec un send. Donc, sur ce protocole-là, sur ce module qui est fourni par node, il n’y a pas énormément de possibilités. On peut juste envoyer, recevoir des messages. Mais on pourrait juste travailler le corps des messages ou même les fonctionnalités ici, pour pouvoir travailler sur les différentes informations qu’on renvoie au client. On pourrait pourquoi pas stocker le nom de la personne, etc., l’utiliser dans les messages, vraiment s’amuser à faire beaucoup de choses. Là les possibilités sont assez infinies. Je vous conseille vraiment de vous focaliser un maximum sur les web socket parce que c’est extrêmement intéressant, et ça va vraiment avec node.js, puisque node.js étant un serveur asynchrone, là vous êtes pleinement dans de l'asynchrone, mais vous êtes presque limite synchronisé parce que vous avez vu déjà que tous les clients reçoivent le message en même temps.

L'essentiel de Node.js

Exploitez les possibilités de Node.js et créez des applications côté serveur entièrement en JavaScript. Travaillez avec des requêtes web, gérez le protocole WebSocket, etc.

4h00 (44 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Node.js Node.js 7.0
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :26 déc. 2016
Durée :4h00 (44 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !