Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Castanheira

Ajuda com sockets

Mensagens Recomendadas

Castanheira

Boas, sou novo nestas andanças e estou aqui para vos pedir ajuda para um projecto que tenho de fazer e que passo a descrever. Tenho um programa que funciona através de sockets que envia dados recebidos pela porta USB, para o server, situação que tenho a funcionar impecavelmente em "localhost". Mas a ideia é que o local onde estes dados têm de ser recebidos e mostrados! é numa página html, ou seja, estes dados irão manipular um website que tem imbutido o google maps, sendo que esses mesmos dados irão dizer se quero rodar, subir, descer, etc o mapa.

A minha duvida é esta, ja li um bom livro de JSP, e vi que é possivel através do mesmo chamar metodos de classes em Java, testei então este facto com a socket server colocada algures no servidor. Conclusão sei que o servidor está a ser chamado e está a funcionar, pois ao conectar o cliente ele recebe a indicação de que o server está ligado, contudo não consigo apresentar os dados numa simples página html. Acham que devo proceder com este método de envio dos dados (sockets), ou sugerem alguma alternativa? Caso deva manter as sockets, alguém tem alguma sugestão para mostrar os dados em html?

Tenho tomcat devidamente configurado e já fiz diversos testes, caso utilizasse por exemplo uma classe que tivesse um metodo que devolve-se uma string, consigo facilmente mostrar essa string na página html, mas lá esta é um dado estático! enquanto que das sockets estou constantemente a receber dados!

Espero ter sido conciso.

Cumprimentos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Isso parece-me uma mistura de problemas.

JSP vai executar no servidor, o que significa que só vais ter acesso aos dados que o socket recebeu quando o utilizador fizer um refresh à página. Não existe comunicação constante entre um servidor HTTP e o browser que está a aceder às diversas páginas pelo que com JSP nunca vais conseguir actualizar a página dado que quem tem de actualizar é o browser.

Para a recepção de dados pelo servidor HTTP, neste caso o tomcat que está a servir as páginas, sockets podem ser usados sem problemas, quer seja directamente quer tenhas uma segunda aplicação a receber os dados.

Não percebi bem como tens o projecto mas se pretendes usar apenas HTML, só consegues ver actualização a cada refresh feito pelo utilizador. Uma opção será colocares Javascript a fazer pedidos sucessivos e assim simular um refresh, nem que parcial.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Castanheira

Knitter, antes de mais obrigado pela ajuda. Pois o problema será o refresh "constante" da webpage, dizes tu para tratar disso através de javascript, vou tentar fazer isso mesmo.

Cumps.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Castanheira

Knitter, nunca trabalhei com AJAX mas à um principio para tudo! Contudo de momento vou por outro caminho, à experiencia claro. Os dados que são recebidos pela socketserver (que está a rodar dentro do tomcat) vou guarda-los num file, de inicio .txt, e posteriormente XML (só não vou para la já porque não sei ainda trabalhar com XML). Depois através do jsp, leio o ficheiro linha a linha e vou vendo os valores que la vão sendo colocados. Claro que nunca vou gravar mais do que 10-20 linhas, quando atingir este valor recomeça a escrever de inicio. O que achas desta solução?

Cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

O problema é sempre o mesmo, fazer refresh para mostrar os dados.

Considerando um exemplo:

a) O socket recebe os dados e escreve para o ficheiro 4 linhas

:D O utilizador acede à página, o JSP vai ser executado, lê as 4 linhas e mostra o HTML

c) O socket recebe mais dados e escreve no ficheiro mais 5 linhas

d) Enquanto o utilizador não fizer refresh, no HTML só estarão os dados de 4 linhas

e) Um utilizador novo vai ao URL, o JSP é executado e mostra 9 linhas no HTML

Neste momento, enquanto o primeiro utilizador não fizer refresh não vai ver os novos dados e tens dois utilizadores a ver dados diferentes.

Isto pode ser um problema, ou não, depende muito do que pretendes fazer. Se a página é uma página HTML, entende-se que só é actualizada quando o utilizador pede para tal, eventualmente podes querer ter uma actualização constante e aí entre o Javascript, com ou sem jQuery.

O jQuery é útil porque te permitirá fazer AJAX sem te preocupares com o que é e como funciona, uma coisa tão simples como jQuery.get(<url>) e tens o pedido feito, depois podes pegar nos dados e em Javascript alterar o que pretendes.

No fundo, podes guardar os dados onde quiseres, ficheiro, base de dados, etc, o problema não está em ir buscar os dados mas em que os mesmos só são actualizados se o utilizador fizer um refresh à página.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.