socket.io-XHR polling vs flashsocket et websocket

j'utilise le noeud.js et socket.io. J'ai un problème avec la vitesse de connexion par socket.io. Dans Internet Explorer et Opera j'ai un problème avec la vitesse de connexion. - Quand j'utilise flashsocket ou websocket. Quand j'utilise le mode de transport-la connexion XHR polling est rapide - dans tous les navigateurs (i.e., FF, Chrome, Opera).

Quelle est la différence entre le mode de transport - XHR-polling et flash / websocket? Quel est le meilleur mode de transport? Comment optimiser la connexion la vitesse est socket.io?

Merci pour le Conseil!

21
demandé sur Jenan 2012-01-10 13:32:38

2 réponses

je serais surpris si la vitesse générale de la connexion au fil du temps était différente entre les navigateurs web, mais la raison pour laquelle vous verrez un retard dans la connexion initiale dans Internet Explorer et dans Opera est que le support WebSocket natif n'est pas disponible car il a été désactivé par défaut. Donc, si vous choisissez FlashSocket alors un objet Flash supplémentaire (fichier SWF) devra être téléchargé avant qu'une connexion ne soit établie.

les WebSockets sont introduits dans IE10 et dans Opera ils sont disponibles, mais désactivé par défaut.

Quelle est la différence entre le mode de transport - XHR-polling et flash / websocket?

  • XHR-interrogation - voir http://en.wikipedia.org/wiki/Push_technology#Long_polling
  • connexion FlashSocket-utilise un objet Flash Socket pour établir une connexion au serveur WebSocket et communique en utilisant le protocole WebSocket. Cela signifie qu'il y a interaction entre Flash et JavaScript et signifie également un objet Flash supplémentaire (fichiers SWF) devra être téléchargé.

Quel est le meilleur mode de transport?

WebSockets pour tout navigateur Web qui le supporte nativement (Chrome, Firefox, Safari). Si L'objet Flash (fichier SWF) se trouve dans le cache du navigateur, la connexion doit être rapide. Si c'est non, alors il y aura un retard. XHR long-Polling est une bonne solution et fonctionnera à travers le navigateur, mais il y a des points négatifs:

  • entre les demandes de sondage, les données affichées peuvent être périmées (périmées).
  • c'est une méthode de connexion moins efficace qu'une seule connexion TCP utilisée par les WebSockets, car HTTP Long-Polling utilise des connexions multiples pour simuler la fonctionnalité bidirectionnelle
  • HTTP a un overhead qui signifie que des informations d'en-tête supplémentaires sont envoyées sur demande et chaque requête subséquente.

Comment optimiser la vitesse de connexion est socket.io?

(je suis assez nouveau à douille.io c'est juste une suggestion)

je regarderais le configurer Socket.io docs et voir si vous pouvez de manière conditionnelle transports basé sur le navigateur qui se connecte. D'après vos expériences, cela pourrait être:

  • Chrome, Firefox, Safari-WebSockets
  • IE, Opera-XHR-Polling
30
répondu leggetter 2012-01-10 22:27:47

pour réduire le temps de connexion, vous pouvez essayer de réduire le délai de connexion (qui est de 10 secondes par défaut) en utilisant le paramètre "connect timeout".

par exemple, Pour réduire le délai de connexion à 1 seconde:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
5
répondu leszek.hanusz 2012-10-11 14:54:52