Meu cliente de bate -papo baseado em flash não é robusto o suficiente? Que outra maneira existe?

StackOverflow https://stackoverflow.com/questions/2373026

  •  24-09-2019
  •  | 
  •  

Pergunta

Eu desenvolvi um cliente de bate -papo baseado em flash que exibe mensagens publicadas por usuários pertencentes a um grupo junto com seu nome de usuário e tempo de redação. Os dados são armazenados em um banco de dados MySQL com o ID do grupo, ID de usuário e mensagem para que persistam além das sessões de bate -papo e permitam que os usuários fizessem login posteriormente para ver as discussões, menos um bate -papo, mais um quadro de avisos. Quando um usuário grava uma mensagem, quero que os clientes de bate -papo atualizem instantaneamente um bate -papo em tempo real. Até agora, minha solução foi incluir um intervalo no meu código flash que chama uma página de PHP que consulta o banco de dados para novos comentários e retorne isso ao Flash.

Eu acho que pelo que li que essa abordagem é chamada de longa votação? Isso está certo? Isso é robusto o suficiente para o volume? Eu estaria procurando melhor empurrar os dados para o cliente quando houver alterações? Como faço para detectar essas mudanças? Eu olhei para o APE, por exemplo, mas não acho que isso armazena as mensagens em um banco de dados.

Alguma sugestão?

Foi útil?

Solução

O ruim da pesquisa é que pode se tornar caro bastante rápido.

Vamos supor que você tenha 10000 usuários on -line, que desejam que o bate -papo tenha um atraso não maior que 1 segundo. Então Youn bombardeará seu servidor com 10000 solicitações por segundo.

Para coisas menores ou coisas que não precisam estar atualizadas, a pesquisa é uma boa abordagem, pois é simples e não pode dar errado.

Se isso é apenas para uma pequena comunidade com até 100 pessoas usando o bate -papo, esse não deve ser o problema.

Além disso, você pode usar o APE ou o SmartFox, ou Red5 ou muitas coisas diferentes para criar um servidor de retransmissão persistente, ou seja, um servidor que possui conexões permanentes com todos os clientes e notifica -os sobre quaisquer alterações (por exemplo, novas mensagens).

Como sempre, meu conselho pessoal é usar Haxe. Você pode usar o Tutorial de bate -papo para começar. Haxe tem uma curva de aprendizado bastante íngreme, mas acho que vale totalmente a pena. Estou feliz por ter deixado o ActionScript e o PHP para trás.

editar: O que você descreve não é longa votação. Além disso, você dificilmente pode fazer pesquisas longas com PHP, pelo menos se o clássico usado com o Apache. O Apache criará um certo número de processos PHP. Sempre que uma solicitação chega, ele procurará um processo PHP gratuito e deixará processar a solicitação. Quando o processo PHP é feito, ele envia a resposta de volta ao cliente. Se não houver processos gratuitos disponíveis, ele bufferá a solicitação até que um processo fique disponível. Assim, você pode bloquear totalmente todo o seu servidor se tentasse fazer uma pesquisa longa com o PHP da maneira clássica.

Outras dicas

Se você quiser notificar o aplicativo sempre que uma nova mensagem for recebida, precisará implementar algum tipo de aplicativo no servidor para monitorar o banco de dados / ser alertado sobre as alterações nele e, em seguida, passe atualizações para os clientes.

Isso deve ser mais eficiente do que apenas pesquisar, porque se você pensa em um cenário de baixo tráfego, com a pesquisa, estará saindo do servidor, independentemente - dessa maneira, você está apenas gerando tráfego quando houver um motivo. ..

Quando você digita um comentário, seu cliente pode notificar este aplicativo diretamente (por meio de um serviço da Web) da alteração, e esse aplicativo ajudante poderia atualizar o banco de dados ...

Deve -se dizer que não sou especialista em programas de bate -papo - nunca estive envolvido em um pessoalmente ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top