== PROTOCOLO PARA GAMBIT == @sdemingo Borrador: Febrero 2022 1. FORMATO DE LOS MENSAJES Todos los mensajes tienen el mismo formato. Están formados por un entero que marca el tipo de mensaje (cmd), un string que guarda el nombre el usuario que origina el mensaje (user) y un string que forma el payload del mensaje (args). Los mensajes se envían aplanados en formato JSON. Los mensajes enviados por el servidor llevarán el campo user vacío. Los tipos de mensajes que ahora mismo están implementados son: - CREATE: Usado para crear una partida nueva. - JOIN: Para unirse a una partida ya creada en el servidor. - MOVE: Para transmitir al servidor un movimiento. - END: Para indicar que se abandona una partida. Además tenemos los tipos: - OK: Para indicar que el mensaje anterior ha tenido éxito en caso de que se necesite comunicar - ERROR: Para indicar que ha habido un error en caso de que se necesite comunicar. 2. CREACIÓN DE UNA PARTIDA El jugador que quiera jugar con blancas deberá enviar primero un mensaje al servidor de tipo CREATE. Este mensaje no requiere payload especial y en caso de llevarlo debe ser ignorado por el servidor. En caso de que la partida pueda ser creada, el servidor contestará con un mensaje de tipo OK con un identificador válido como payload que represente la partida creada en el servidor. En caso contrario se contestará con un mensaje de tipo ERROR con el mensaje informativo como payload. Tras este envío el jugador blanco debe quedarse a la espera de un segundo mensaje de tipo OK que lleve como payload el nombre de su oponente (jugador negro). 3. PARTICIPAR EN UNA PARTIDA El jugador de juege con negras debe recibir el identificador de su oponente. Para unirse a la partida debe enviar un mensaje de tipo JOIN acompañado de este identificador como payload. En caso de que la partida pueda ser creada, el servidor contestará con un mensaje de tipo OK con el nombre del oponente (jugador con blancas) como payload. En caso contrario se contestará con un mensaje de tipo ERROR con el mensaje informativo como payload. 4. NOTIFICAR UN MOVIMIENTO Un movimiento se transmite al servidor usando un mensaje de tipo MOVE al que acompañamos del movimiento. El movimiento se transmite en notación FEN. El servidor no responde al mensaje de movimiento y únicamente lo transmite al otro jugador. Cada cliente es responsable de guardar su turno y esperar su movimiento. Los clientes deben permanecer a la espera de mensajes de tipo MOVE y cuando reciban uno aplicarlo a su tablero. 5. ABANDONAR LA PARTIDA En cualquier momento se puede enviar un mensaje de tipo END para notificar un abandono de la partida. El servidor no responde al mensaje de abandono. El mensaje recibido por el servidor será reenviado al otro jugador para que sea consciente del abandono. En caso de que la conexión de un cliente se cierre de forma inesperada, el servidor envía al otro jugador un mensaje de tipo END para que notificar el abandono. 6. SOLICITAR TABLAS En proceso ...