Tengo un problema que no se como solucionarlo.
Estoy haciendo un juego multijugador en tiempo real de aviones usando un servidor de sockets php.
El problema viene cuando el servidor envía a un solo cliente flash varios mensajes consecutivos, el cliente solo recibe el primero y el resto se pierden.
Si por ejemplo aplico un retardo en el envió de cada mensaje flash recibe correctamente todos los mensajes pero no es una solución porque la técnica que quiero utilizar para mover a los jugadores es enviando las teclas pulsada (keystrokes) y si aplico un retardo entre cada tecla pulsada entonces no se refleja correctamente los jugadores en la posición correcta.
Ejemplo simple 1
Servidor
Código PHP :
/*Supongamos que 4 clientes saludan a la vez en un chat y le enviamos el saludo al mismo cliente*/ socket_write($client, "hello1".chr(0x00)); socket_write($client, "hello2".chr(0x00)); socket_write($client, "hello3".chr(0x00)); socket_write($client, "hello4".chr(0x00));
Cliente flash
Código ActionScript :
function onEnterDataSocket(event:ProgressEvent):void { var buffer:String = socket.readUTFBytes(socket.bytesAvailable); trace(buffer); //El resultado del trace es únicamente “hello1” }
Ejemplo sencillo 2. Así funciona correctamente pero no es una opción para enviar keystrokes
Servidor
Código PHP :
/*Esta vez enviamos los 4 mensajes pero con un tiempo de espera de 1 segundo entre cada uno*/ socket_write($client, "hello1".chr(0x00)); Sleep(1); socket_write($client, "hello2".chr(0x00)); Sleep(1); socket_write($client, "hello3".chr(0x00)); Sleep(1); socket_write($client, "hello4".chr(0x00));
Cliente flash
Código ActionScript :
function onEnterDataSocket(event:ProgressEvent):void { var buffer:String = socket.readUTFBytes(socket.bytesAvailable); trace(buffer); /*El resultado seria hello1 hello2 hello3 hello4*/ }
Si alguien se ha encontrado en la misma situación y ha conseguido solucionarlo o alguien sabe alguna otra técnica para poder solventar el problema agradecería que me diera alguna solución
De ante mano muchas gracias
Saludos