Foros del Web » Programando para Internet » Javascript »

Problema con websockets

Estas en el tema de Problema con websockets en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/06/2014, 02:02
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Problema con websockets

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:
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](myWebSocketConnection);
wsPublic.onopen = function () {
    alert("Conexión creada");
};
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?

Muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 06/06/2014, 02:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con websockets

Para lo primero, a lo mucho puedes sugerirle al usuario que descargue e instale un navegador que de soporte a la tecnología Websocket, pues sin el que tiene no ofrece este soporte, no hay nada más que se pueda hacer.

Para lo segundo, pues depende de cómo hayas realizado la conexión. Verifica que el valor de myWebSocketConnection sea acorde a lo establecido por la W3C.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 06/06/2014, 02:48
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con websockets

Hola Alexis88,
Antes de nada, gracias por tu rápida respuesta.
En mi caso myWebSocketConnection = "wss://myServer:443/myWebSocketChannel"
donde "myWebSocketChannel" es el canal que defino según la parte de la web en la que me encuentro.
Entiendo que debe ser correcto.

Manel
  #4 (permalink)  
Antiguo 07/06/2014, 01:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con websockets

Cuando intentas realizar la conexión y esta no se llega a dar, ¿qué mensaje se muestra en la consola?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 12/06/2014, 04:41
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con websockets

Hola Alexis88,
He puesto lo siguiente:
Código:
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");}
}
ar 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?

Etiquetas: browsers, mac, navegadores, pc, smartphones, tablets, websockets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:09.