Logo Hardware.com.br
Guitarrista Kurumin
Guitarrista... Super Participante Registrado
837 Mensagens 14 Curtidas

Criação de Chats - Idéias? (Mellhores práticas)

#1 Por Guitarrista... 25/06/2008 - 11:39
Pessoal, em um sistema web estou fazendo uma espécie de chat para que os usuários logados possam trocar mensagens. Até aqui tudo ok...

O que eu gostaria de saber era a opnião de vocês sobre a viagem no servidor para buscar os dados. Como que o pessoal geralmente faz? Tipo coloca pra ficar dando refresh em iframe de poucos em pouco segundos, usa um timer do javascript e busca no ajax?

Na verdade isso é mais uma dúvida de melhores práticas do que de implementação em si mesmo. Ou seja, o que seria mais usado, menos tráfico e tal. Porque pode acontecer de ficar indo sem parar uma vez atrás da outra e não ter nenhuma mensagem nova, alias, é o que mais pode acontecer...

Se pegarmos por exemplo aquele chat que tem dentro do gmail, aparentemente ele não fica fazendo requests com ajax o tempo todo (analisei pelo firebug) e muito menos recarregando iframes...

Idéias?
Zuela
Zuela Super Participante Registrado
796 Mensagens 10 Curtidas
#2 Por Zuela
25/06/2008 - 15:04
Bom o gmail fica fazendo request com ajax em intervalos e se encontrar alguma diferençã só carrega no DOM os elementos novos (bem pelo eu acho isso); se eu fosse fazer tentaria procurar como realizar um IM.
Da uma olhada nesse aqui: www.ajaxim.com
X2 4200 EE AM2 cap_feceiro.png:
Abit NF-M2 nView
2x512 DDR2 667 Corsair VS
2x1GB DDR2 667 Kingston
Sapphire 4670 1GB
TT TR2 430W
1TB Seagate
[B]LG H20N

TT Matrix ze_bonitinho.png
Guitarrista Kurumin
Guitarrista... Super Participante Registrado
837 Mensagens 14 Curtidas
#3 Por Guitarrista...
25/06/2008 - 16:13
IM que vc disse seria Instant Messenger? É mais ou menos isso mesmo o planejado... Ainda não pensei detalhes da arquitetura interna de como fazer isso, mas creio que pra fazer mesmo vai ser tranquilo...

Acho que a melhor saída seja mesmo ficar checando de tempos em tempos no servidor se teve algo novo...

Acabei de ter uma idéia! Posso deixar checando de um intervalo de tipo uns 10 a 20 segundos em situações normais. Se a janelinha de conversação estiver aberta eu reduzo esse tempo para 1 a 3 segundos. Acho que pode ser uma saída que não vai ter um desempenho muito baixo.

Esse site que vc passou não está funcionando.
Conhecimento é saber que tomate é fruta. Sabedoria é saber que não se coloca tomates em uma salada de frutas.
RR_Fang
RR_Fang Super Participante Registrado
430 Mensagens 39 Curtidas
#5 Por RR_Fang
25/06/2008 - 17:42
Um chat box bem simples, bem CBox-like, feito há um tempo para o índice de um fórum que administro, oferece apenas atualização manual (clicando em um link ou botão). Para um fórum de pequeno porte foi a solução ideal: apesar de nada elegante, não impactou a performance. Aparentemente, o pessoal se controla quanto ao tempo para atualizá-lo smile.png

Uma possível solução, um pouco mais elegante e em AJAX, seria controlar o tempo de auto-atualização por meio de um timer que registre há quanto tempo foi a última atividade do usuário no chat. Quanto menor a inatividade, menor o tempo de refresh. Enviar uma mensagem, recarregar/acessar a página ou atualizar manualmente o chat resetariam o timer. Pouparia um pouco o servidor sem prejudicar demais o desenrolar de uma conversa com delays abusivos rindo_ate_agora.png

O mais correto seria ainda uma arquitetura próxima a de um Instant Messenger real, com checagem no servidor a partir de sessões ou "ping" (XMLHTTPRequest)... Nesse ponto, me interessei pelo AjaxIM, vou ler mais a respeito dele hehe isso_ai.png
Ricardo "Fang MoonRupt"
< Archlinux User >
Zuela
Zuela Super Participante Registrado
796 Mensagens 10 Curtidas
#6 Por Zuela
25/06/2008 - 18:31
Se o objetivo é um Instant Messenger da uma procurada sobre o protocolo Jabber que você obtera melhores resultados, estou implementando um server e um cliente customizado jabber esta sendo um processo realmente interessante.
^^
X2 4200 EE AM2 cap_feceiro.png:
Abit NF-M2 nView
2x512 DDR2 667 Corsair VS
2x1GB DDR2 667 Kingston
Sapphire 4670 1GB
TT TR2 430W
1TB Seagate
[B]LG H20N

TT Matrix ze_bonitinho.png
Guitarrista Kurumin
Guitarrista... Super Participante Registrado
837 Mensagens 14 Curtidas
#7 Por Guitarrista...
27/06/2008 - 11:16
Esse ajaxim me pareceu bastante interessante, mas me parece ser integrado apenas com php do lado do servidor. Mas se ele fizer apenas a consulta e retornar um json com as informações fica simples de adaptar para qualquer linguagem, e como meu sistema é fortemente baseado em requisições ajax que retornam json ficou ótimo. Não entendi muito bem ainda como esse componente trabalha, vou estudá-lo melhor...

Sobre o jabber realmente pode ser uma opção interessante.

Outro dia brincando aqui achei uma biblioteca java para se comunicar com o msn messenger, consegui receber e enviar mensagens pelo console do eclipse usando essa pequena biblioteca trabalhando com listners que já vêm prontos, achei muito interessante.

A idéia de fazer a checagem conforme a frequência de uso do cara tbm é bem interessante...

Ainda tenho outras coisas mais urgentes para implementar nesse sistema, até que eu comece a mexer nesse módulo ainda vai levar uns 2 ou meses pelo que to vendo. Até lá vou amadurecer mais a idéia...
Conhecimento é saber que tomate é fruta. Sabedoria é saber que não se coloca tomates em uma salada de frutas.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal