2011-08-10 21 views
11

necesito utilizar jsonp-sondeo para IE, y xhr-votación para Firefox, así que intentado definir tipos de transportes en el lado del cliente como esto:Definir los tipos de transporte en el lado del cliente

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['xhr-polling'] 
      }); 
    } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['jsonp-polling'] 
      }); 
    } else { 
      var socket = io.connect(VG.NODE_SERVER_URL); 
    } 

Lo probé en Firefox y agregué el inicio de sesión en socket.io-client lib. En

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1509

los option.transports es ["xhr-polling", "flashsocket", "htmlfile", "xhr-polling", "jsonp-polling"], lo que es correcto. Sin embargo, en

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1679

no sé por qué los transportes cambiar a ["htmlfile", "jsonp- polling", "xhr-polling"], que tiene la misma secuencia que lo que definida en el lado del servidor.

¿Por qué no utiliza la opción anterior?

+0

No estoy seguro de cuál es la pregunta aquí, es que dada la secuencia - 'xhr-polling', etc, anterior se ignora y en su lugar' htmlfile' va primero? ¿Este problema se replica con socket.io '0.8.7'? –

+0

¡Gracias por tu pregunta! Fue una respuesta para mi pesadilla con FireFox. La documentación de Socket.io es tan mala ... Es el único lugar donde encontré las opciones de transporte. :) –

Respuesta

18

El error ya está corregido en la versión 0.9.6 socket.io, puedo usar esto y funciona fina:

socket = io.connect(HOST_REMOTE, { 
    transports: ['xhr-polling'] 
}); 

En la versión 1.0.0 y superiores:

socket = io.connect(HOST_REMOTE, { 
    transports: ['polling'] 
}); 
+2

La fuente actual (1.3.3) parece estar ahora usando 'polling' en lugar de 'xhr-polling'. –

+0

si usamos xhr-polling y sondeo para connet ios, android y html5, entonces puede crear cualquier problema como desconectar el socket en cualquier momento u otro ...? –

1

hay un error en socket.io.client.

lo que no puede configurar transportes en el cliente ...

function Socket (options) { 
this.options = { 
    port: 80 
    , secure: false 
.... 
}; 

io.util.merge(this.options, options); 
.... 
}; 

debería ser io.util.merge(this.options, options,0);....

Cuestiones relacionadas