02/10/2009, 15:35
|
| | | Fecha de Ingreso: octubre-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes Puntos: 0 | |
Estructura Cliente-Servidor (PHP + AJAX) Hola!
Estoy intentando crear una estructura de Cliente-Servidor del tipo Sockets en C. Es decir, una estructura en la que el cliente 'espera' un mensaje del servidor y entonces actúa.
Lo que pretendo es que los Servidores (PHP) manden una señal a un cliente (o a todos) para que el JavaScript que hay en cada uno de los clientes detecte dicha señal y la interprete. Con un ejemplo lo entenderéis mejor:
Imaginad que el proyecto para el que se destina esta estructura es un CHAT en PHP - JavaScript. La dinámica básica sería la siguiente:
Alguien envía un mensaje ------> El mensaje llega al servidor quién se encarga de distribuir los mensajes por todos los clientes.
Del modo 'tradicional' (o el que antes se me ha ocurrido por lo menos) sería que el servidor almacenase todos los mensajes y los clientes fuesen 'pidiéndole' las novedades cada X tiempo.
Así pues, imaginemos los individuos: Jose y Manel: Jose escribe > Hola
El mensaje se almacena en la base de datos (o lo que sea) del servidor. Pasa un tiempo preestablecido y el cliente de Manel envía una petición al Servidor, éste le indica las novedades: Manel lee: "Jose> Hola"
El procedimiento es fácil de entender pero... no es muy eficiente:
1- Hay un retardo de X tiempo (establecido por el administrador) en el que Manel se queda con ansias de saber.
2- Cada X tiempo se realizan consultas al servidor que pueden ser INNECESARIAS (no siempre hay cambios en la base de datos, ¿no?), lo cuál supone un GIGANTESCO consumo de recursos.
Ahora bien, una vez entendéis lo que es el problema... lo que os pido es intentar buscar una solución del siguiente tipo: Jose escribe > Hola
El mensaje es interpretado por el servidor. Éste envia una 'SEÑAL' a todos los clientes conectados (¿CÓMO?) quiénes, o bién directamente reciben el mensaje, o bién hacen una consulta de 'novedades' SABIENDO QUE LAS HAY. Manel lee: "Jose> Hola"
Manel ahora es feliz!
Este procedimiento es mucho mejor porque:
1- Manel recibe su mensaje en tiempo real (obviando los tiempos que tarda en viajar el mensaje).
2- Sólo se consulta al servidor cuando es necesario.
Si alguien tiene la solución a mi dilema, sería muy bien recibida :)
Pensad que esto puede dar mucho dinamismo a todas las webs ya que podemos interacturar con todos los usuarios conectados en tiempo real (un blog que se actualiza sólo, un foro tremendo, chats...)
Un saludo :) |