Dans mon article de blog précédent, Socket.io, j'ai brièvement introduit l'utilisation de base de Socket.io et créé une simple démo de salle de discussion. Sur la base du chapitre d'introduction, cet article continue d'explorer l'utilisation avancée de socket.io. Cet article commencera à partir de la configuration, des salles, des événements, etc., et introduira certaines API et précautions pratiques dans Socket.io.
1. Configuration
Socket.io fournit 4 API de configuration: io.configure, io.set, io.enable, io.disable. io.set définit l'élément unique, et io.enable et io.disable sont utilisés pour définir la configuration booléenne en un seul élément. IO.Configure vous permet de configurer différents paramètres pour différents environnements de production (tels que le développement, le test, etc.). Ce qui suit définit les différentes configurations de socket.io dans deux environnements:
La copie de code est la suivante:
var io = require ('socket.io'). écouter (80);
io.configure ('développement', function () {
io.enable ('Browser Client etag');
io.set («Niveau de journal», 1);
});
io.configure ('release', function () {
io.set («transport», [«WebSocket»]);
});
Le suivant répertorie certains éléments de configuration couramment utilisés. Pour des paramètres de configuration spécifiques, veuillez vous référer au wiki officiel.
1) .Transports (par défaut ['WebSocket', 'htmlfile', 'xhr-polling', 'JSONP-Polling']): un tableau contenant des types de méthodes de communication. Socket.io prend en charge une variété de façons de réaliser une communication en ligne instantanée, telle que WebSocket, sondage, etc. Cette configuration vous permet de choisir vous-même la méthode de communication de sauvegarde.
2) Niveau. Log (par défaut 3): Le niveau le plus bas de la sortie du journal, 0 est une erreur, 1 est averti, 2 est des informations et 3 est de débogage et tous les types de journaux sont sortis par défaut.
3).
2. Salle
La salle est une fonctionnalité très utile fournie par socket.io. La salle équivaut à fournir un espace de noms pour certains clients spécifiés, et toutes les émissions et communications dans la salle n'affecteront pas les clients en dehors de la pièce.
Dans l'introduction, nous savons que Socket.Join («Nom de la salle») peut être utilisé pour entrer dans la pièce par le client, et Socket.Leave («Nom de la salle») est utilisé pour quitter la pièce. Lorsque le client entre dans une pièce, le message peut être diffusé dans la salle de deux manières:
La copie de code est la suivante:
// 1. Diffuser un événement dans ma chambre, et le candidat sera exclu (c'est-à-dire aucun message ne sera reçu)
io.sockets.on ('connexion', fonction (socket) {
// Remarque: Par rapport à ce qui suit, voici la soumission des événements du point de vue du client
socket.broadcast.to («ma chambre»). Emit («event_name», données);
}
// 2. Diffuser un événement dans une autre salle, et tous les clients de cette salle recevront un message
// Remarque: par rapport à ce qui précède, voici la soumission des événements du point de vue du serveur
io.sockets.in («une autre salle»). Emit («event_name», données);
// diffusé à tous les clients
io.sockets.emit ('event_name', data);
En plus de diffuser des messages dans la salle, vous pouvez également obtenir des informations sur la pièce via l'API suivante.
La copie de code est la suivante:
// Obtenez des informations sur toutes les pièces
// La clé est le nom de la pièce, la valeur est le tableau d'identification de socket correspondant au nom de la pièce
io.sockets.manager.
// Obtenez le client dans une pièce particulière et retournez toutes les instances de socket dans cette pièce
IO.SOCKETS.CLIENTS («Room particulier»)
// Obtenez les informations de la salle saisies par cette prise via Socket.id
io.sockets.manager.roomclients [socket.id]
3. Événements
Socket.io propose des événements par défaut intégrés. Lors de la conception d'événements, nous devons éviter les noms d'événements par défaut et utiliser de manière flexible ces événements par défaut.
Événements côté serveur:
1.
socket.on ('message', fonction (message, rappel) {}): Cet événement est déclenché lorsque le client transmet un message via socket.send. Le message est le message transmis. Le rappel est le rappel à exécuter après avoir reçu le message.
2) .socket.on ('n'importe quoi', fonction (données) {}): licencié en cas d'événement reçue
3) .socket.on ('déconnecter', fonction () {}): déclenche lorsque la prise perd la connexion (y compris toutes les situations de déconnexion telles que la fermeture du navigateur, la déconnexion active, la déconnexion, etc.)
Événements du client:
1) .Connect: La connexion est réussie
2) .Connexion: connexion
3) .Disconnect: déconnecter
4) .Connect_failed: la connexion a échoué
5). Error: une erreur s'est produite et ne peut pas être traitée par d'autres types d'événements.
6) .Message: le même événement de message côté serveur
7).
8) .reconnect_failed: Reconnect a échoué
9) .Reconnect: reconnecté avec succès
10). Reconnouer: reconnexion
Ici, nous devons mentionner la commande lorsque le socket client initie la connexion. Lorsque la première connexion est connectée, l'ordre de déclenchement de l'événement est: connect-> connect; Lorsque la connexion est perdue, l'ordre de déclenchement de l'événement est: déconnecter-> reconnexion (peut être effectué plusieurs fois) -> Connexion-> reconnecter-> connect-> connect.
4. Autorisation
1). Diffusé à tous les clients: socket.broadcast.emit («message de diffusion»);
2). Entrez dans une pièce (très facile à utiliser! Il est équivalent à un espace de noms, qui peut être diffusé dans une pièce spécifique sans affecter les clients dans d'autres pièces ou non dans la pièce): Socket.Join («Nom de votre pièce»);
3). Message de diffusion dans une salle (l'expéditeur ne peut pas recevoir le message): socket.broadcast.to («Nom de votre salle»). Emit («Message de la salle de diffusion»);
4). Messages diffusés dans une salle (y compris l'expéditeur peut recevoir des messages) (cette API appartient à io.sockets): io.sockets.in («un autre nom de pièce»). EMIT («Message de la salle de diffusion»);
5). Force Websocket Communication: (client) socket.send ('hi'), (serveur) Utilisez socket.on ('message', fonction (data) {}) pour recevoir.
Il s'agit essentiellement de l'introduction à l'utilisation avancée de Socket.io. Je pense personnellement que ces API de base suffisent à utiliser quotidiennement, ce qui reflète également la philosophie de conception extrêmement simple et facile à utiliser de Socket.io. Cet article n'est qu'un moyen d'attirer l'attention. Lorsque vous rencontrez des problèmes qui ne peuvent pas être résolus lors d'une utilisation réelle, il sera préférable de vérifier le wiki détaillé officiel.