Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
NCS_One

Comunicação continua com o servidor, em ajax.

Recommended Posts

NCS_One

Boas.

Gostaria de saber como faço para o cliente (browser) ficar com uma ligação continua com o server, para quando houver alguma alteração o server poder enviar os novos dados. E já agora se poderem explicar um pouco como isto funciona agradecia.

Obrigado.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
NCS_One

Então como funciona por exemplo o update de mensagens do facebook ?


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
NCS_One

Se reparares o cliente não faz pedido de actualização, o servidor é que quando tem informação nova a envia para o cliente.

E também existe uma ligação que fica activa durante aproximadamente 55 segundos, e quando essa termina é iniciada outra.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
NCS_One

Queres dizer que o cliente passado X segundos é que faz o pedido de actualização ao servidor ?

Em relação às mensagens não tenho a certeza porque só registei uma conta para testar e só tenho um amigo. Por isso não aparecem muitas mensagens. Mas no chat tenho a certeza que à uma ligação continua.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
Knitter

O protocolo HTTP não suporta uma ligação continua, portanto nenhuma tecnologia que funcione sobre HTTP irá suportar ligação continua. A ligação existe enquanto o cliente está a fazer download de algum recurso e depois é terminada, eventualmente em servidores/browsers mais recentes existe a possibilidade de efectuar mais que uma ligação em simultâneo (por exemplo para fazer download de imagens de forma mais rápida) mas não deixam de ser ligações que terminam depois do recurso ter sido obtido.

O que precisas fazer é criar código para que o JS esteja constantemente a perguntar ao servidor se existe alguma coisa para processar/actualizar/etc, não é o servidor que vai enviar os dados, até porque o servidor já nem sabe quem é ou onde está cliente.

Share this post


Link to post
Share on other sites
mjamado

Tal como já foi dito, não há ligações contínuas...

... mas há ligações muito, muito longas.  :cheesygrin:

Aquilo a que tu "assistes" no Facebook, assim como noutros sites, é uma técnica para "simular" server push chamada long polling.

Basicamente, consiste em abrir uma ligação AJAX que, em chegando ao servidor, é mantida em espera se não houver nada para enviar (com um while, por exemplo). Assim que existirem dados, o pedido é devolvido, e o browser envia imediatamente outro. Para evitar timeouts, o servidor devolve o pedido vazio de x em x tempo, caso não haja dados (são os tais 55 segundos que vês no FB).


"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

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
Sign in to follow this  

×

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.