Foros del Web » Creando para Internet » HTML »

SSE para Notificaciones

Estas en el tema de SSE para Notificaciones en el foro de HTML en Foros del Web. Estimados conocedores de la Web... me dirijo a ustedes por recomendación de @cvander, así es que procedo. Actualmente estoy desarrollando una plataforma Workflow de gestión ...
  #1 (permalink)  
Antiguo 11/07/2012, 18:17
Avatar de jmsarmiento  
Fecha de Ingreso: julio-2012
Ubicación: Puente Alto, Santiago
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
SSE para Notificaciones

Estimados conocedores de la Web...
me dirijo a ustedes por recomendación de @cvander, así es que procedo.

Actualmente estoy desarrollando una plataforma Workflow de gestión interna que, aunque no se espera que tenga miles de usuarios recurrentes, si pudiera tener varias decenas. Entonces, es necesario que la actividad que está sucediendo en el sistema y que sea relevante para un usuario conectado, se le informe en el momento. Es decir, se necesita implementar notificaciones online.
Entonces pensé en implementar Server Side Events. Actualmente funciona y me informa los eventos correctamente, pero estoy haciendo las pruebas yo sólo... no puedo evitar pensar el estrés del servidor con 100 usuarios conectados y por cada usuario un proceso en loop consultando la "tabla de notificaciones" cada 3 o 5 segundos más lo que el usuario esté haciendo como trabajo personal.

No se me ocurre una manera óptima de "almacenar los eventos -> informar los eventos -> acciones por evento".

Actualmente los eventos relevantes los estoy almacenando en una tabla en MySQL, la que es consultada en un loop por el servidor SSE.

Les adjunto los códigos para que quede un poco más claro:

Código Cliente:
Código:
var evtSource = new EventSource("include/sse.php");

evtSource.addEventListener("actividad", function(e) {  
		
		var obj = JSON.parse(e.data);  

		/* CÓDIGO QUE PROCESA LA RESPUESTA DEL EVENTO */
}, false);
Código del servidor (sse.php):
Código:
header("Content-Type: text/event-stream\n\n"); 

$cont = 0;

$conn = new mysqli("localhost","USER","PASS","BD");

$sql = "SELECT count(*) as contador FROM notificacion WHERE idusuario = " . $_SESSION["id_usuario"];

while (true) {  
	$rs = $conn->query($sql);
	$fila = $rs->fetch_array(MYSQLI_ASSOC);
    
    if($cont != $fila["contador"]){
		$cont = $fila["contador"];
		
		echo "event: actividad\n";
		echo 'data: {"cont": "' . $cont . '"}';  
		echo "\n\n"; 
	} 
	
	$rs->close();
		
	ob_flush();  
	flush();  
	sleep(5);  
}
Les agradecería mucho su opinión y ayuda.
  #2 (permalink)  
Antiguo 14/07/2012, 01:08
Avatar de jmsarmiento  
Fecha de Ingreso: julio-2012
Ubicación: Puente Alto, Santiago
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: SSE para Notificaciones

Nadie??
ni un comentario??

:/
  #3 (permalink)  
Antiguo 15/07/2012, 20:47
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: SSE para Notificaciones

Para experimentar está bien, pero si IE no lo soporta, yo no lo uso en sitios de producción

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 15/07/2012, 20:58
Avatar de jmsarmiento  
Fecha de Ingreso: julio-2012
Ubicación: Puente Alto, Santiago
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: SSE para Notificaciones

Cita:
Iniciado por emprear Ver Mensaje
Para experimentar está bien, pero si IE no lo soporta, yo no lo uso en sitios de producción

Saludos
Al ser un desarrollo de caracter interno, no hay problemas con los requerimientos relativos al navegador.
De todos modos, por estos lares ya no se toman muy en cuenta las deficiencias de IE... :D

Ahora, ¿cómo lo harías sin usar SSE?
  #5 (permalink)  
Antiguo 15/07/2012, 21:19
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: SSE para Notificaciones

vos crees?
http://www.w3counter.com/globalstats.php
http://gs.statcounter.com/#browser-w...106-201206-bar

No es algo que haga habitualmente ni es exactamente lo mismo, pero podría arreglarmelas con un php llamado via ajax con setInterval()
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: html5, serverside, sse
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 00:14.