Aplicação Distribuída com JAVA e FLEX

1 resposta
nettofarah

Boa noite, pessoal.

Estou para começar um projeto envolvendo java e flex.
Pretendo utilizar spring e blazeDS.
Trata-se de um jogo de cartas online.

Estou começando a planejar e projetar o software. Enquanto eu planejava surgiu uma dúvida.

Tenho a idéia de implementar as interações entre os clientes (flex) e o servidor (java) através do serviço de mensagens do blaze.
Explicando:

Todos os clientes se inscrevem num tópico ( no caso, cada partida será um tópico diferente).
Pretendo implementar o “estado” do jogo no servidor java. Ou seja, uma lista de cartas, uma lista com os jogadores, o estado de cada jogador (representado no prórprio objeto jogador), uma pilha com as últimas jogadas, a implementação das regras de cada jogo, etc…

Pelas minhas idéias, o servidor tem a responsabilidade de controlar as regras do jogo… Ele decide quem ganha, “embaralha” as cartas do baralho, marca os pontos de cada rodada… etc

Então imaginei os seguintes passos em jogo:

1 - O cliente faz uma jogada. (FLEX)
2 - O cliente envia uma mensagem especificando a operação executada. (FLEX)
3 - O servidor recebe a mensagem, interpreta (caso necessário, dependendo dos cabeçalhos da mensagem), executa alguma ação de controle, e depois roteia para os clientes que também se inscreveram no tópico daquele jogo. (SERVIDOR JAVA)
4 - Os clientes recebem a mensagem do servidor e a atualização seus estados. (FLEX) (desse modo todos que estão jogando mudam seus estados de acordo com a resposta do servidor).

5 - Tudo começa novamente.

Enfim, o servidor administra o jogo. Escolhe a vez de alguém jogar, define se uma rodada terminou, aplica penalidades… etc.

Minha dúvida surge no seguinte: Como manter uma sessão com estado no servidor, de modo com que os clientes se conectem e façam as requisições para a “MESA” correta?

Penso que seria algo como uma Classe Stateful onde os clientes podem mandar mensagem. Mas como implementar algo deste jeito?

Tive como idéia criar um mapa no Application Scope do servidor, e toda vez que eu receber uma mensagem eu verificar em qual instância se encontra aquela mesa e então direcionar a mensagem.
Esta idéia é válida? Existe alguma maneira mais inteligente de se implementar algo assim no SPRING?
Preciso utilizar EJB com um Statateful bean?

Desde já agradeço.

Ivayr Farah Netto

1 Resposta

nettofarah

ah, na segunda frase considerem: “envolvendo”.

(= falha minha… rsrs

Criado 6 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 1
Participantes 1