Jump to content
gambas

Ajuda em desenvolvimento de chat

Recommended Posts

gambas

Boas malta!...

Estou a começar a desenvolver um módulo de chat estilo facebook/gmail para o cms que construi.

O problema é que estou com alguns problemas a nivel do desenvolvimento:

- Os requests feitos ao browser devem ser feitos com muito ou pouco intervalo de tempo? A ideia que tenho é fazer de x em x segundos um request e ir verficar se existe alguma mensagem nova entre user's. Como se processa o request? É que não cria estar a fazer muitos request em pouco espaço de tempo. Acho que vai 'estourar' com o browser.

- Em termos de cookies devo usar para salvar alguns dados essenciais? porque ontem reparei em algo interessante.

Imaginemos que eu tinha a minha janela de chat, ou com um outro utilizador do facebook aberta, e fechava-a. Inicialmente pensei que fosse uma cookie, com o estado da janela, ou seja aberta/fechada.

Mas ontem tinha sessão iniciada no facebook com dois computadores diferentes (na minha conta), e quando abria janela para falar com uma amigo ou a janela de chat, no outro computador também a janela ficava vísivel. O que á partida me parece é que isto involve dados ba base de dados.

Alguem me poderia dar uma ajuda ou se souber alguns funcionamentos do chat?  porque eu tenho umas luzes como fazer, e nem precisava de ajuda vossa se fosse para fazer uma coisa fraquinha. mas quero fazer algo bastante consistente e muito funcional.

Share this post


Link to post
Share on other sites
mjamado
- Os requests feitos ao browser devem ser feitos com muito ou pouco intervalo de tempo? A ideia que tenho é fazer de x em x segundos um request e ir verficar se existe alguma mensagem nova entre user's. Como se processa o request? É que não cria estar a fazer muitos request em pouco espaço de tempo. Acho que vai 'estourar' com o browser.

A técnica usada pelo Facebook (e outros serviços) chama-se long polling ou comet. São muito menos requests (a menos que o chat seja muito intenso, aí vai dar, na pior das hipóteses, ao mesmo).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
gambas

Pois eu também ja ouvi falar!

Mas pelo que percebi e dando um exemplo, posso ter um script em php a executar durante bastante tempo é isso? O que não percebo é como posso aceder aos dados devolvidos por esse script se só no final de o executar eles vão estar disponiveis para eu lhes ter acesso?

Ou será que durante o pedido de ajax e execução o script me vai devolver algo?

Share this post


Link to post
Share on other sites
mjamado

Sim, basicamente tens um script PHP com um ciclo, sempre a verificar se há mensagens novas para enviar. Quando houver, interrompes o ciclo e devolves. O JS está à espera do resultado, via callback e faz o que tem a fazer (colocar a nova mensagem na caixa do chat, neste caso) e volta a fazer o pedido para o servidor, onde volta a entrar no ciclo.

Na prática, há uma pequena situação que tens de controlar, que é o max_execution_time do PHP: a quantidade de "voltinhas" do ciclo tem de totalizar um tempo inferior a esse valor. Quando chegar lá perto, é conveniente devolveres vazio, e o JS volta a pedir.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
gambas

mjamado obrigado,

ja estou a perceber o esquema e de facto é uma boa hipotese.

em relação ás questões das cookies alguem me sabe dizer qualquer coisa? o que queria saber era basicamente como guardar estados de janelas, as ultimas mensagens trocadas por utilizadores, ou se esta inactivo... esse tipo de funcionalidades extra

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.