Foros del Web » Programando para Internet » PHP »

Estados de usuario en chat.

Estas en el tema de Estados de usuario en chat. en el foro de PHP en Foros del Web. Buenas, estoy haciendo un chat en PHP. (Ajax, javascript, etc.) El problema que tengo es como guardo el estado del usuario, es decir, si está ...
  #1 (permalink)  
Antiguo 29/06/2011, 15:20
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Estados de usuario en chat.

Buenas, estoy haciendo un chat en PHP. (Ajax, javascript, etc.)

El problema que tengo es como guardo el estado del usuario, es decir, si está conectado, ausente, desconectado.. (en principio con conectado y desconectado me vale ).

He pensado en guardarlo como un campo en la tabla de usuarios dandole el valor de ON si está conectado o OFF si está desconectado para que los demás usuarios lo vean conectado o desconectado.

Bien, cuando se conecta, ese campo se pone en ON. ¿Pero como lo pongo en OFF cuando el usuario cierre el navegador?

Claro ejemplo, Facebook. ¿Cómo gestiona esto? ¿Cómo sé yo que un usuario está conectado o desconectado? ¿Cómo me informa Facebook de ello?

Gracias de antemano
  #2 (permalink)  
Antiguo 29/06/2011, 16:31
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Estados de usuario en chat.

mira este tema:

http://www.forosdelweb.com/f18/repor...suario-924226/

el usuario gysato dió una excelente forma de hacerlo mediante javascript.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 30/06/2011, 00:56
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Estados de usuario en chat.

Gracias. Había pensado en hacerlo así, pero me planteé diversos problemas.

¿Si al usuario se le cae la conexión?
¿O si se el cuelga el navegador?
¿Y si tiene más de una ventana abierta pero solo cierra una?

El usuario queda conectado para "siempre" o sale desconectado cuando no debería.

No se si habrá alguna forma de hacer una "petición al cliente" para ver si está conectado todavía o algo así.
  #4 (permalink)  
Antiguo 30/06/2011, 01:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Estados de usuario en chat.

Podrias agregar un campo donde guardes la fecha (timestamp) de ultima actividad del usuario, debes actualizar cada que realice alguna accion (ver pagina, enviar mensaje en el chat, etc.) y, finalmente, definir el tiempo maximo de inactividad para considerarlo desconectado.

Código PHP:
Ver original
  1. $activo = time() - 300; // Hora actual menos 5 minutos
  2.  
  3. // Tu consulta seria algo como:
  4. // SELECT * FROM usuarios WHERE ultimoacceso > $activo
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 30/06/2011, 07:51
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Estados de usuario en chat.

la idea de Triby es buena, otra alternativa sería enviar una señal al cliente cada cierto tiempo (20 segundos aprox) y que este cliente por AJAX envíe una señal de respuesta automáticamente, sin que el usuario se entere de nada.

si el cliente no responde la señal significa que no tiene la página abierta y puedes considerarlo off.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 30/06/2011, 08:05
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Estados de usuario en chat.

La idea de Triby me viene de lujo para poner a los usuarios "Inactivos" o "Ausentes". Gracias ;)

Y lo que me propones, stramin, es lo que yo necesitaria para considerar a un usuario Offline. Pero, ¿cómo envio esa señal del servidor al cliente para que me responda?

Gracias por vuestras respuestas :)

Etiquetas: chat, estados, usuarios
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 05:16.