[AJUDA] Rmi - Servidor enviar mensagem para Cliente

Olá

Preciso fazer uma aplicaçao distribuida para a faculdade. Estou pensando em um Instant Messenger, um Msn. Gostaria de utilizar RMI, mas há um problema: meu cliente terá que receber mensagens do servidor que sao provenientes de seus contatos, isso pode ser feito implementando o “cliente chato”, que é eu fazer uma thread q fica buscando a cada intervalo de tempo no servidor para verificar se há novas mensagens.

Eu não queria fazer algo tao, sei la, tosco, sem contar a sobrecarga q daria na rede. Existe o padrao Observer, no qual eu poderia definir uma interface com os metodos do cliente, como “notificarMensagem(String msg)” e o servidor possuiria um array dessa Interface, onde buscaria o cliente para notificar. O problema é que para isso eu teria que distribuir objetos do cliente para o servidor acessar, liberar portas do cliente, etc.

Tem como contornar isso?

Até onde eu aprendi, após um cliente invocar um metodo num objeto distribuido pelo servidor, a conexao é fechada, e reaberta na proxima chamada. Tem como manter essa conexão?

Nao sei se fui bem claro, se nao fui, por favor poste a duvida para mim explicar. Qualquer ajuda é bem-vinda.

vlw.

Oi

Se quer fazer uma chat…faça usando Socket na unha…pq com socket tanto o server quanto o client pode enviar informações serializadas de uma ponto para outra. RMI não cabe nessa solução sendo que ele é uma tecnologia de chamada de métodos remotos…ou seja…não tem como o servidor enviar alguma coisa para o cliente se não for a resposta da chamada de um método. Para contonar isso no RMI vc teria q fazer um pool de chamadas para o servidor RMI de 5 em 5 segundo seguindo a mesma filosofia do AJAX…para pegar as mensagens recentes…até daria certo…como sendo uma projeto academico…mas ficando como sendo uma gambiarra.
Agora se fizer com Socket fica bacana !! Pq as 2 pontos podem enviar dados e receber…dai é so implementar a mecanica.

opa

foi o que eu pensei, para usar RMI é soh na gambiarra mesmo entao.
Mas blz, vou ver aqui, o foda d socket é que vou demorar o triplo do tempo eu acho.

vlw a resposta.

Vai sim…tem que fazer as conexão TPC com as Threads e o protocolo de comunicação…demora um pouquinho…mas fica redondo !!
Boa sorte…qualquer coisa estamos por aqui :smiley:

Olá será que alguém poderia me ajudar estou criando um chat onde o usuario pode escolher se vai mandar a mensagem para todos os usuarios ou uma mensagem privada para apenas um usuário, se ele escolher apenas um é aberta uma nova janela para digitar sua mensagem mais não estou conseguindo fazer esse mensagem chegar apenas para o determinado destinatário ela está indo para todos.
Alguém sabe o que posso fazer
Obrigado

meu email para contato é :
cygnus.tks@hotmail.com

Ola Marcos

Eu implementei esse mecanismo no ultimo chat TCP que eu fiz. A mecânica foi o seguinte…

  1. As pessoas podiam entrar com login único.
  2. Eu criei um protocolo de comunicação dentro do chat.
  3. O servidor controlava todos os usuários logados.
  4. Cada usuário tinha a listagem de todos os usuário conectados.
  5. Quando o usuário enviava uma mensagem para outro usuário…nesse protocolo tinha todas as informações…de que usuário era a mensagem…pra quem estava enviando…e qual era a mensagem…a ponta enviava para o servidor que interpretava isso e repassava para o usuário destino.
  6. Cada usuário logado ficava enviando uma mensagem de ALIVE de 10 em 10 segundos para mandar um TIMEOUT login.
  7. Quando algum usuário fica sem mandar a mensagem de ALIVE…por qualquer motivo…eu tinha um processo que desconectava ele do chat e notificava os outros clientes.

Basicamente seria isso,…para maiores detalhes é só perguntar :smiley:

Fernando obrigado pela dica,é exatamente este controle que estou pretendendo fazer,mais minha dúvida sobre o que falou é a seguinte comoirei fazer o protocolo enviar todos os dados necessário e o servidor reconhecer pra qual usuário a mensagem terá que ir.
E utilizando esse metodo de 10 em 10 segundos o usuário enviar uma mensagem pra dizer que está logado não sobrecarrega muito o servidor, quando o usuário do chat e desconectado aparece apenas uma mensagem que ele foi desconectado ou também some da listade usuários.
Se possível poderia me mostrar como foi feito o seu chat.

será que pode me passar seu email ou pega o meu email para que possa te passar exatamente onde estou tendo problemas meu email é:
cygnus.tks@hotmail.com

Obrigado

Meu msn é fernandofranzine@hotmail.com.