La bibliothèque de classe Socket.io peut non seulement se envoyer des messages, mais également se envoyer des événements via la méthode EMIT de l'objet de port de socket.
Emit a déclaré dans l'événement précédent qui dit maintenant: Emit est utilisé pour déclencher manuellement les événements.
La copie de code est la suivante:
socket.emit (événement, données, fonction (data1, data2 ......) {
});
Lors de l'envoi d'événements à l'aide de la méthode EMIT, vous pouvez utiliser la méthode ON de l'objet de port de socket à l'autre extrémité pour écouter sur la méthode Once.
La copie de code est la suivante:
socket.on (événement, fonction (data, fn) {
});
socket.once (événement, fonction (data, fn) {
})
Les données des paramètres dans la fonction de rappel ci-dessus: les données effectuées dans l'événement envoyé par l'autre partie,
FN: La fonction de rappel de rappel spécifiée par l'autre partie lors de l'envoi d'un événement.
Cas 1: Une fois le serveur et le client connecté, un événement d'actualités est envoyé au client et un objet est transporté dans l'événement, et la valeur d'attribut HELLO de l'objet est "bonjour". Lorsque le client envoie mon autre événement d'événement, le "serveur reçoit des données" est sorti dans la console + les données transportées dans le client envoient l'événement.
Code côté serveur, server.js
La copie de code est la suivante:
var http = require ("http");
var sio = require ("socket.io");
var fs = require ("fs");
var server = http.createServer (fonction (req, res) {
res.writehead (200, {"Content-Type": "Text / Html"});
res.end (fs.readfilesYnc ("./ index.html"));
});
server.Listen (1337);
var socket = Sio.Listen (serveur);
socket.on ("connexion", fonction (socket) {
socket.emit ("news", {Hello: "Hello"});
socket.on ("mon autre événement", fonction (data) {
console.log ("le serveur accepte les informations% j", données);
});
});
Client index.html Code:
La copie de code est la suivante:
<! Doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<Title> </Title>
<script src = "/ socket.io/socket.io.js"> </ script>
<cript>
var socket = io.connect ();
socket.on ("news", fonction (data) {
console.log (data.hello);
socket.emit ("mon autre événement", {my: "data"});
});
</cript>
</ head>
<body>
</docy>
Résultats de l'opération:
Une chose que vous pouvez trouver est que l'exécution est toujours du côté d'écoute, pas du côté manuel.
Cas 2: Lorsque l'événement de l'autre partie est déclenché manuellement, spécifiez la fonction de rappel.
Lorsque le client et le serveur sont connectés, l'événement SetName est envoyé au client. L'événement propose "Zhang San". Lorsque l'événement est déclenché, une fonction de rappel est spécifiée, qui étend 2 valeurs de paramètres à la console.
La copie de code est la suivante:
var http = require ("http");
var sio = require ("socket.io");
var fs = require ("fs");
var server = http.createServer (fonction (req, res) {
res.writehead (200, {"Content-Type": "Text / Html"});
res.end (fs.readfilesYnc ("./ index.html"));
});
server.Listen (1337);
var socket = Sio.Listen (serveur);
socket.on ("connexion", fonction (socket) {
socket.emit ("setName", "Zhang san", fonction (data1, data2) {
console.log (data1);
console.log (data2);
});
});
La copie de code est la suivante:
<! Doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<Title> </Title>
<script src = "/ socket.io/socket.io.js"> </ script>
<cript>
var socket = io.connect ();
socket.on ("setName", fonction (nom, fn) {
console.log (nom);
fn ("li si", "wang wu");
});
</cript>
</ head>
<body>
</docy>
</html>
Résultats de l'exécution:
La fonction de rappel est en fait exécutée à l'extrémité de déclenchement.