Boa noite GUJZeiros, tudo beleza?
Bem, eu fiz um chat via socket cliente - servidor e agora tenho que mudar a comunicação para RMI.
Estaria tudo bem, porém há o fato de que a partir do meu cliente eu instancio um jogo online de Batalha Naval. Este jogo tem alguns movimentos que precisam ser propagados na rede, tais como: perdi, acertei?, enviarJogada. E no momento estou tratando assim:
BatalhaNaval -> Cliente, ou seja, tenho uma conexão RMI que liga meu aplicativo Batalha Naval com o meu Cliente..
Até aí "tudo bem.."
TUDO BEM NADA, Deu um nó GIGANTESCO no meu cérebro trabalhar com o RMI!! Tudo porque são projetos diferentes e, pelo que eu entendi ao usar RMI, precisamos criar uma interface remota, por exemplo:
public interface Comunicacao extends Remote{
public boolean solicitaOponenteParaJogo(String jogo, String jogador1, String oponente) throws RemoteException;
public String solicitaConexaoCliente(String ip, String nick) throws RemoteException;
public void enviaMsgChat(String msg) throws RemoteException;
public void desconectar(String idCliente) throws RemoteException;
public boolean jogadaRealizada(String idJogador,String x, String y) throws RemoteException;
}
E Precisamos implementá-lo (que será o meu objeto remoto acessado pelo cliente), assim:
public class ServidorChat implements Comunicacao{
E no lado do cliente eu farei a Instanciação (através de um lookup no rmiregistry) da interface Comunicação para poder usar seus métodos, certo? Isso implica dizer que terei que COPIAR o Comunicacao.java e colar no projeto do meu Cliente, certo? (estou perguntando "certo?" pois é assim que eu ACHO que seja).
Até aí OK, eu entendi. Agora começa a complicar porque o meu Cliente tem métodos próprios que são propagados pelo servidor, como: mensagemRecebida, ataqueRecebido, etc.
Então aí implica dizer que eu terei que criar uma Interface Remota lá no meu cliente, implementá-la, copiar o ClienteRemote.java e colar no projeto do meu Servidor, correto?
...Até aí.. já tá complicando.. mas tudo FODE DE VEZ é quando entra o meu aplicativo BatalhaNaval.. Pois eles também vão trocar mensagens entre si, como: enviaJogada (batalha naval -> Cliente), ataqueRecebido(Cliente -> BatalhaNaval)..
POR FAVOR, ME DÊEM UMA LUZ!! Com certeza estou cometendo um erro GRAVE na estruturação do meu projeto e toda vídeo aula ou etc que poderia me auxiliar sempre mostram classes num mesmo projeto que compartilham um classpath e conhecem a Interface remota em questão a ser instanciada..
Obrigado!!