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

NCS_One

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

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

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.