node.js internet-explorer-8 cross-browser socket.io

node.js - problemas con socket.io en IE8 y 9



internet-explorer-8 cross-browser (2)

Observé problemas con el uso de express y socket.io juntos (posiblemente, no estoy 100% seguro de la causa real) con IE8, si recargas una página web con un socket, a veces el nuevo socket no funcionará correctamente

Se manifestaría por el servidor de socket perdiendo paquetes, y ocasionalmente con páginas web Express que no cargan; era necesario reiniciar el servidor para arreglar esto. Fue fácil observar que se recargaba rápidamente una página web con un cliente socket.io que intentaba enviar y recibir mensajes (nuestro marco de prueba lo hace).

Sospecho que express ya que socket.io parece engancharse en express, y cargar la página web parecía tener problemas ocasionalmente.

Mientras investigaba, noté que los enchufes no se desconectaban automáticamente en la descarga de la página y, en su lugar, parecían agotar el tiempo de espera del servidor para desconectarse.

Desconectar explícitamente de esta manera parece arreglarlo (traduzca a su marco favorito según sea necesario):

$(window).on("beforeunload", function() { socket.disconnect(); });

Socket.io funciona perfectamente en todas las plataformas excepto IE8 y 9, que es un requisito del cliente. ¿Podrían ayudarme con este problema?

He estado leyendo todos los problemas similares, pero la mayoría de las soluciones que he encontrado hasta ahora no pueden resolver este problema en IE8.

aquí está la estructura:

LADO DEL SERVIDOR

var ip = ''xxx.xxx.xxx.xxx''; var ipPort = ''8081''; var app = require(''http'').createServer(handler); var io = require(''socket.io'')(app); var fs = require(''fs'') app.listen(ipPort, function() { //console.log(''Listening at: http://''+ ip +'':''+ ipPort +''''); }); //io.set(''transports'', [''websocket'',''flashsocket'', ''htmlfile'', ''xhr-polling'', ''jsonp-polling'']); function handler (req, res) { fs.readFile(__dirname + ''/test.html'', function (err, data) { if (err) { res.writeHead(500); return res.end(''Error loading index.html''); } res.writeHead(200); res.end(data); }); }

LADO DEL CLIENTE

<html> <body> </body> <script src="/socket.io/socket.io.js"></script> <script> alert("hi"); //var socket = io.connect(''xxx.xxx.xxx.xxx:8081'',{transports:''jsonp-polling''); var socket = io.connect(''''xxx.xxx.xxx.xxx:8081'',{secure: true}); socket.on(''news'', function (data) { alert("hello data:"+data[0]); socket.emit(''my other event'', { my: data }); }); socket.on(''connect'', function () { alert("hello socket"); }); </script> </html>

no recibo ningún error, simplemente no respondo ... puse una alerta () en socket.on (''noticias'') y no recibo ningún comentario, PERO LUEGO agregué socket.on (''connect'') y coloqué alert () adentro y aparece !!

Espero que haya alguien que pase por este tema antes y lo solucione. Estoy en win7 y nodo (v0.10.30) socket.io (v1.0.6) muchas gracias por toda la ayuda.


la única solución que encontré para este problema fue instalar agregar expreso al servidor; y todo milagrosamente funciona! (npm install express)

preguntándonos si todos necesitamos instalar Express para evitar estos problemas ... mmmhh!

EDITAR: aparentemente había otros dos problemas dentro del código en el lado del cliente:

Agregué <!DOCTYPE html> en el encabezado de la página y moví el código y el enlace del script externo de socket.io al final de la etiqueta. y todos los problemas desaparecieron