Comprovación sitios disponibles ajax para los demás usuarios

re4q

Hola, vengo a preguntar un problema que me ha surgido que no se como acabar de solventar.
Tengo una página donde se gestionan reservas, pero estas reservas simplemente se guardan en la BD como fecha y usuario, por lo que todos los cálculos de ocupación del espacio etc se hacen a mano, no se guarda ocupación como tal en la BD.
En el frontal, cuando un espacio está ocupado del todo, inhabilito el botón de reservar por lo que está "capado" que puedan reservar un espacio ya ocupado, però, aquí és cuando la matan. Que pasa si varias personas abren desde distintos navegadores a la vez i dan a reservar. Da igual si han pasado 10, 15 minutos, que si esas personas han abierto el navegador cuando aún había espacios, ese botón de reservar no sale inhabilitado, i puede haver venido otro i reservar el último sitio.
Con ajax controlo la propia reserva, es decir si està disponible i reservas el último sitio todo correcto, pero claro solo lo controlo en su DOM.
Como puedo controlar a los demás?

vivora

Una opción podría ser, cuando alguien le da al botón reservar, que directamente ya contaras esa reserva como ocupada durante X minutos, independientemente de que acabe de formalizar la reserva o no. Es por ejemplo lo que hacen en los cines, cuando seleccionas una butaca, a los demás les sale como ocupada, aunque no hayas comprado todavía la entrada.
Además de esto, en el paso de guardar la reserva en la BD, tendrías que volver a hacer una última comprobación para ver si ese espacio sigue libre, y si no está libre, informar de que ha ocurrido un error por ejemplo.

1
Hipnos

Comprobar y haber se escriben con "b".

La /i/ que usas como conjunción es una "y". Y en castellano no existen las tildes para la izquierda.

Todo esto no resuelve tu problema pero si yo fuera tu jefe me preocuparía mucho de que no lo sepas.

1 respuesta
JuAn4k4

Validar en el servidor, no en cliente.

2
re4q

#3 La costumbre de escribir en catalán. Si te ha ofendido mi mala ortografía en un foro, te pido disculpas.

1 respuesta
KoRMuZ

#5 Lo que te dicen es la única opción, que antes de meter la reserva en BD, veas si hay disponibilidad o no. Y si no hay, le devuelvas un mensaje.

Si eso no lo quierse hacer, tiras un ajax a la bd cada X tiempo y deshabilitas el botón si te dice que ya no hay sitio

1 1 respuesta
JuAn4k4

Si quieres ir un nivel más, pones websockets y haces la ui reactiva a eventos que vengan del servidor. Si los datos son públicos más fácil será.

Polling/pull (la respuesta de #6 ) vs push (con ws)

Usuarios habituales

  • JuAn4k4
  • KoRMuZ
  • re4q
  • Hipnos
  • vivora