Comunidad de diseño web y desarrollo en internet online

Problema con websockets

Citar            
MensajeEscrito el 06 Jun 2014 09:29 am
Hola a todos, antes de nada decir que no sé si es en este foro donde debo alojar este problema. Siéntanse libres de moverlo si fuera el caso.
Tengo una web hecha en HTML5 y Javascript en la que creo una conexión mediante websockets tal que así:

Código Javascript :

var support = "MozWebSocket" in window ? 'MozWebSocket' : ("WebSocket" in window ? 'WebSocket' : null);
if (support == null) {
    alert("Este navegador NO acepta WebSockets");
    return;
} else {
    alert("Este navegador SÍ acepta WebSockets");
}
wsPublic = new window[support]("wss://myServer:443/myWebSocketChannel");
wsPublic.onopen = function () {
    alert("Conexión creada");
};
wsPublic.onerror= function (error) {
    alert("Error " + error);}
}
wsPublic.onclose = function () {
    alert("Conexión cerrada");}
}

Tengo varios problemas/preguntas:
Problema 1: Algunos navegadores, tanto de PC/MAC como de smartphones y tablets, no aceptan websockets, con lo cual les salta el mensaje de "Este navegador NO acepta WebSockets". Hay alguna manera de hacer que los soporten?
Problema 2: Algunos navegadores de smartphones y tablets SÍ aceptan websockets, pero no llegan a crear la conexión. A qué se debe? Cómo puedo solucionarlo? Tampoco me dice que la conexión se haya cerrado o que haya habido algún error.

Muchas gracias por su ayuda

Por manel.pi

71 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Jun 2014 08:32 pm
Primero revisa la tabla de compatibilidad con WebSocket de los navegadores: http://caniuse.com/#search=websocket

Luego debes estar seguro que el servidor al que quieres conectarte acepta conexiones con el protocolo WebSocket. La mayoría no lo hace (aún).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 10 Jun 2014 07:12 am
Hola DriverOp,
Revisaré la tabla, pero creo recordar que sí que los acepta.
Por otro lado, el servidor que uso sí acepta conexiones WebSocket, ya que si uso navegadores de PC, iPhone, iPad, ... acepta la conexión sin problemas.

Alguna otra idea?
Muchas gracias

Por manel.pi

71 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jun 2014 12:52 pm
La sugerencia es no utilices tecnología experimental que restringa el acceso en general a la aplicación.

Si solo 1 o 2 navegadores soportan la tecnología, lo mejor es NO utilizarla amenos que se requiera lo contrarío.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 12 Jun 2014 10:49 am
Hola elporfirio,
La mayoría de navegadores aceptan esta tecnología. El problema radica en los navegadores nativos de Android.
He añadido lo siguiente a mi código:

Código Javascript :

var support = "MozWebSocket" in window ? 'MozWebSocket' : ("WebSocket" in window ? 'WebSocket' : null);
if (support == null) {
    alert("Este navegador NO acepta WebSockets");
    return;
} else {
    alert("Este navegador SÍ acepta WebSockets");
}
wsPublic = new window[support]("wss://myServer:443/myWebSocketChannel");
waitForSocketConnection();
wsPublic.onopen = function () {
    alert("Conexión creada");
};
wsPublic.onclose = function () {
    alert("Conexión cerrada");}
}
var timerID;
var websocketState = '';
function waitForSocketConnection() {
        clearTimeout(timerID);
        if(websocketState != wsPublic.readyState) {
            console.log("socket.readyState = " + wsPublic.readyState);
        }
        websocketState = wsPublic.readyState;
        timerID = setTimeout("waitForSocketConnection()", 1000);
 }

Como puedes ver llamo cada segundo a una función que me retorna el estado de la conexión.
El problema está en que en los navegadores nativos de Android me dice que el "readyState = 0" lo cual significa que aun no se ha establecido la conexión, pero en el resto de navegadores (PC, iPhone, iPad) esto no sucede.

Alguna idea?
Gracias por el tiempo empleado

Por manel.pi

71 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.