Foros del Web » Programando para Internet » Node.js »

Problema entre los navegadores y Node.js

Estas en el tema de Problema entre los navegadores y Node.js en el foro de Node.js en Foros del Web. Estoy haciendo un sistema muy simple y me di cuenta que cada navegador reacciona diferente. Lo que estoy haciendo es, enviar un mensaje a todos ...
  #1 (permalink)  
Antiguo 07/05/2013, 23:14
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 13 años, 10 meses
Puntos: 4
Problema entre los navegadores y Node.js

Estoy haciendo un sistema muy simple y me di cuenta que cada navegador reacciona diferente.
Lo que estoy haciendo es, enviar un mensaje a todos los sockets cuando un usuario se conecta y otro mensaje cuando el usuario se desconecta.

El servidor responde a todos los clientes (incluso al que emitió el mensaje), y los clientes ejecutan un alert con el mensaje "El usuario X se conecto" (o "se desconecto" segun el caso).

Ahora bien, con los 3 navegadores que probe (firefox, internet explorer y chrome) hacen lo siguiente:

IE: solo se ejecuta el alert de "conexion" en los 3 navegadores.
FF: ejecuta los alert de conexion y desconeccion en todos los navegadores menos en el mismo FF.
Chrome: ejecuta todos los alert en todos los navegadores (esto seria lo ideal).

Para emitir que un usuario se conecto o desconecto, utilizo el siguiente codigo:
Código:
$(window).bind("beforeunload", function()
{	
	var socket = io.connect('http://localhost:1337');
	socket.emit('usuarioDesconectado', "id_us");
});

$(window).bind("load", function(){
        var socket = io.connect('http://localhost:1337');
	socket.emit('usuarioConectado', "id_us");
});

Mi pregunta es, el problema es de los navegadores o de Node.js ?
Como podria solucionar el problema?


Muchas gracias.
  #2 (permalink)  
Antiguo 27/05/2013, 08:44
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: Problema entre los navegadores y Node.js

Diferente comportamiento en navegadores, es cosa de frontend, por lo que nodejs no tiene culpa de nada ya que va en el servidor.

No he podido realizar pruebas, pero a simple vista diria que tu problema esta en que abres conexiones cada vez que lanzas un evento, para empezar quitaria eso, y luego iria viendo por donde evoluciona la cosa.

Código Javascript:
Ver original
  1. $(window).bind("load", function(){
  2.     var socket = io.connect('http://localhost:1337'); //conectamos al cargar la página, y ya no hace falta abrir nuevas conexiones
  3.     socket.emit('usuarioConectado', "id_us");
  4. });
  5.  
  6. $(window).bind("beforeunload", function(){ socket.emit('usuarioDesconectado', "id_us"); });

La gracia de los sockets es que son conexiones persistentes, por lo que están abierta todos el rato.
De hecho es importante gestionar las conexiones que se quedan abierta no solo desde el cliente, si no tambien desde el servidor, o si no habran sockets abierto escuchando a la nada.. (el evento beforeunload, no es fiable para esto, pues imagina que a tu usuario se le corta la luz de golpe, o simplemente usa opera [si alguien sabe como echar a andar esto en opera, que lo comparta please] nunca se ejecutara el evento de desconexión).

Pues espero que todo fuera eso, que tengas suerte en el proyecto. Un saludo.

Etiquetas: navegadores
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 07:10.