Question

J'utilise Node.js et socket.io. J'ai un problème avec la vitesse de connexion avec socket.io. Dans Internet Explorer et Opera j'ai un problème avec la vitesse de connexion. - Quand j'utilise flashsocket ou websocket. Lorsque j'utilise le mode de connexion XHR transport polling est rapide -. Dans tous les navigateurs (IE, 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 vitesse de connexion est socket.io?

Merci pour les conseils!

Était-ce utile?

La solution

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

WebSockets sont introduits dans IE10 et 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-sondages - voir http://en.wikipedia.org/wiki/Push_technology#Long_polling
  • connexion FlashSocket - utilise un objet Socket Flash pour établir une connexion au serveur WebSocket et communique en utilisant le protocole WebSocket. Cela signifie qu'il ya 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 supporte nativement (Chrome, Firefox, Safari). Si l'objet Flash (fichier SWF) est dans le cache du navigateur, puis la connexion doit être rapide. Si ce n'est pas alors il y aura un retard. XHR long Polling est une bonne solution et travailler navigateur cross, mais il y a des points négatifs:

  • entre sondage demande les données sur l'affichage pourrait être à jour (périmé).
  • Il est une méthode de connexion moins efficace qu'une seule connexion TCP utilisé par WebSockets depuis HTTP utilisations à long Polling connexion multiple pour simuler la fonctionnalité bidirectionnelle
  • HTTP comporte une tête qui désigne les informations d'en-tête supplémentaire est envoyée sur demande et chaque demande ultérieure.

Comment optimiser la vitesse de connexion est socket.io?

(je suis assez nouveau pour Socket.IO à cela est juste une suggestion)

Je regarde le Socket.io docs configuration et voyez si vous pouvez régler la condition transports en fonction du navigateur qui se connecte. Sur la base de vos expériences cela pourrait être:

  • Chrome, Firefox, Safari - WebSockets
  • IE, Opera - XHR-Polling

Autres conseils

Pour réduire le temps de connexion, vous pouvez essayer de réduire le délai d'attente de connexion (qui est de 10 secondes par défaut) à l'aide du paramètre « délai d'attente de connexion ».

Par exemple, pour réduire le délai d'attente de connexion à 1 seconde:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top