Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de l'événement socket.io dans node_node.js

Explication détaillée de l'utilisation de l'événement socket.io dans node_node.js

WBOY
WBOYoriginal
2016-05-16 16:26:541656parcourir

La bibliothèque de classes socket.io peut non seulement s'envoyer des messages, mais également s'envoyer des événements via la méthode d'émission de l'objet port socket.

emit l'a dit lors d'événements précédents et maintenant, il est dit en une phrase : émettre est utilisé pour déclencher manuellement des événements.

Copier le code Le code est le suivant :

socket.emit(événement,données,fonction(données1,données2...){
});

Lorsque vous utilisez la méthode submit pour envoyer un événement, vous pouvez utiliser la méthode on et la méthode once de l'objet port socket à l'autre extrémité pour écouter.

Copier le code Le code est le suivant :

socket.on (événement, fonction (données, fn) {
});
socket.once (événement, fonction (données, fn) {
})

Les données de paramètre dans la fonction de rappel ci-dessus : les données transportées dans l'événement envoyé par l'autre partie,

fn : La fonction de rappel spécifiée par l'autre partie lors de l'envoi de l'événement.

Cas 1 : Lorsque le serveur et le client sont connectés, un événement d'actualité est envoyé au client. L'événement transporte un objet dont la valeur de l'attribut hello est "Bonjour". Après avoir reçu le client, il envoie mon autre événement d'événement. Quand, "Le serveur a reçu les données" est affiché dans la console. Le client envoie les données transportées dans l'événement.

Code côté serveur, server.js

Copier le code Le code est le suivant :

var http=require("http");
var sio=require("socket.io");
var fs=require("fs");
var server=http.createServer(function (req,res) {
res.writeHead(200,{"Content-type":"text/html"});
res.end(fs.readFileSync("./index.html"));
});
serveur.écouter(1337);
var socket=sio.listen(server);
socket.on("connexion", fonction (socket) {
socket.emit("news",{bonjour:"Bonjour"});
socket.on("mon autre événement", fonction (données) {
console.log("Le serveur a reçu des informations %j",data);
});
});

Code index.html du client :

Copier le code Le code est le suivant :







<script><br>         var socket=io.connect();<br> socket.on("actualités", fonction (données) {<br> console.log(data.hello);<br> socket.emit("mon autre événement",{my:"data"});<br>          });                                                   </script>





Résultats en cours d'exécution :,

Une chose peut être découverte : l'exécution se fait toujours du côté de l'écoute, pas du côté de l'exécution manuelle.

Cas 2 : Lors du déclenchement manuel de l'événement de l'autre partie, précisez la fonction de rappel.

Lorsque le client et le serveur sont connectés, un événement setName est envoyé au client. L'événement porte "Zhang San". Lorsque l'événement est déclenché, une fonction de rappel est spécifiée et la fonction de rappel génère 2 valeurs de paramètre. à la console.

Copier le code Le code est le suivant :

 var http=require("http");
 var sio=require("socket.io");
 var fs=require("fs");
 var server=http.createServer(function (req,res) {
     res.writeHead(200,{"Content-type":"text/html"});
     res.end(fs.readFileSync("./index.html"));
 });
 serveur.écouter(1337);
 var socket=sio.listen(server);
 socket.on("connexion", fonction (socket) {
     socket.emit("setName","张三", function (data1,data2) {
         console.log(data1);
         console.log(data2);
     });
 });

复制代码 代码如下 :

 
 
 
    
    
    
     <script><br>          var socket=io.connect();<br>          socket.on("setName", function (nom,fn) {<br>             console.log(nom);<br>              fn("李四","王五");<br>          });      <br>      </script>
 
 
 
 

 

执行结果 :

回调函数实在触发端执行的.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn