Domanda

Io uso node.js e socket.io. Ho un problema con la velocità di connessione con socket.io. In Internet Explorer e Opera ho un problema con la velocità di connessione. - Quando uso flashsocket o websocket. Quando uso la modalità di collegamento XHR trasporto-polling è veloce -. In tutti i browser (IE, FF, Chrome, Opera)

Qual è la differenza tra il modo di trasporto - XHR-polling e flash / websocket? Qual è il miglior modo di trasporto? Come ottimizzare la velocità di connessione è socket.io?

Grazie per il consiglio!

È stato utile?

Soluzione

Sarei sorpreso se la velocità generale della connessione nel corso del tempo era diverso tra i browser web, ma la ragione per cui vediamo un ritardo nella connessione iniziale in Internet Explorer e in Opera è che il supporto nativo WebSocket non è disponibile come è stato disabilitato per default. Quindi, se si sceglie FlashSocket quindi un oggetto (file SWF) aggiuntivo Flash dovranno essere scaricato prima che venga stabilita una connessione.

WebSockets sono state introdotte in IE10 e Opera sono disponibili, ma disabilitato per impostazione predefinita.

Qual è la differenza tra il modo di trasporto -? XHR-polling e flash / websocket

  • XHR-polling - vedi http://en.wikipedia.org/wiki/Push_technology#Long_polling
  • Collegamento FlashSocket - utilizza un oggetto Flash Socket per stabilire una connessione al server WebSocket e comunica utilizzando il protocollo WebSocket. Ciò significa che c'è interazione tra Flash e JavaScript e significa anche un oggetto Flash aggiuntiva (file SWF) avrà bisogno di essere scaricato.

Qual è il miglior modo di trasporto?

WebSockets per qualsiasi browser Web che nativamente supporta (Chrome, Firefox, Safari). Se l'oggetto Flash (file SWF) è nella cache del browser quindi connessione deve essere veloce. Se non è allora ci sarà un ritardo. XHR lungo polling è una soluzione buona e lavorerà cross browser, ma ci sono aspetti negativi:

  • tra sondaggio richiede i dati in mostra potrebbe essere obsoleto (stantio).
  • E 'un metodo di connessione meno efficiente di una singola connessione TCP utilizzata dal WebSockets dal usi HTTP lungo polling connessione multipla per simulare la funzionalità bidirezionale
  • HTTP ha un overhead che significa informazioni di intestazione aggiuntiva viene inviato su richiesta e successiva richiesta.

Come ottimizzare la velocità di connessione è socket.io?

(sono abbastanza nuovo per socket.io a questo è solo un suggerimento)

mi piacerebbe cerca nella configurazione Socket.io docs e vedere se è possibile impostare il condizionale transports in base al browser che si sta connettendo. In base alle vostre esperienze questo potrebbe essere:

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

Altri suggerimenti

Per ridurre il tempo di connessione, è possibile cercare di ridurre il timeout di connessione (che è di 10 secondi per impostazione predefinita) utilizzando il parametro "timeout di connessione".

Ad esempio, per ridurre il timeout di connessione a 1 secondo:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top