web-dev-qa-db-fra.com

Quelle est la différence entre engine.io et socket.io?

Veuillez me corriger si cette question est en double. Concernant node.js, j'utilise socket.io pour la connexion socket en temps réel de l'application cliente à l'application serveur. Je viens d'entendre parler de engine.io, engine.io remplace-t-il socket.io? Je n'ai trouvé aucune information utile sur le site Web engine.io

Merci d'avance

46
L N

engine.io est une bibliothèque de niveau inférieur à socket.io.

Le moteur est à Socket.IO ce que Connect est à Express.

Si vous voulez l'abstraction de niveau inférieur, utilisez engine.io. Si vous voulez une abstraction websocket, continuez à utiliser socket.io.

engine.io est plus intéressant pour vous si vous construisez une bibliothèque/framework au-dessus de socket.io.

socket.io est plus intéressant pour vous si vous créez une application sur socket.io.

91
Raynos

socket.io est construit au-dessus de engine.io.

socket.io est engine.io avec des cloches et des sifflets.

si vous n'avez pas besoin de tout ce que socket.io a (magasin redis, groupes, etc.), utilisez simplement le moteur.

20
kidcapital

Un peu tard pour le jeu :-), mais je vais le mentionner ici pour la postérité.

En plus d'être "de niveau inférieur", l'une des différences les plus importantes est socket.io commencera par les websockets en premier et se dégradera jusqu'à ce qu'il trouve un transport qui puisse fonctionner. D'un autre côté, engine.io commencera par une courte interrogation (et se mettra à niveau sur le côté jusqu'à ce qu'il touche un mur).

Pourquoi?

Du point de vue de l'utilisateur, une connexion WebSocket infructueuse peut se traduire par au moins 10 secondes d'attente pour que l'application en temps réel commence à échanger des données. Cela nuit sensiblement à l'expérience utilisateur.

Pour le moment (2013), les websockets ne sont pas encore omniprésents (par exemple, les anciens navigateurs, les réseaux cellulaires, etc.), il est donc judicieux de commencer avec le XHR 1st.

Voir https://github.com/LearnBoost/engine.io (section Objectifs) pour plus d'informations.

18
khoomeister

Socket.IO v0.9 est obsolète et un peu bogué, et Engine.IO est le successeur intérimaire. Socket.IO v1.0 (qui sortira bientôt) utilisera Engine.IO et sera bien meilleur que v0.9.

Dans mes tests, Engine.IO a semblé fonctionner mieux que Socket.IO v0.9, voir la comparaison: https://medium.com/node-js-javascript/b63bfca0539

Socket.IO essaie de se reconnecter pendant un certain temps après la perte de la connexion, contrairement à Engine.IO.

Socket.IO prend en charge les salles, contrairement à Engine.IO. Vous auriez besoin de salles (via ces modules ou votre propre implémentation) si vous avez des connexions écoutant différentes données/canaux.

8
Deniz Ozger