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

n3lThon

Chat em php + mysql

20 mensagens neste tópico

Estou a criar um chat usando php e mysql e estou a pensar inserir as mensagens numa bd e depois actualizar a janela de conversação de 3 em 3 segundos. Há alguma alternativa melhor ou que não sobrecarregue tanto o servidor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ajax?

Estou pouco familiarizado com tecnologias web, mas qualquer linguagem client-side que permita abrir uma conexão de sockets a um servidor é uma boa solução. Não sei se PHP permite isso. Java permite, não sei se JavaScript permite. Se der, é a melhor solução.

Edit: tenho que começar a reler o que escrevo, tinha escrito "permite" um monte de vezes em poucas frases..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que nem php nem javascript permitem abrir uma conexão de scockets.

Parece-me uma alternativa, mas nunca trabalhei com Ajax. Mais alternativas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acredito que as duas linguagens têm suporte para sockets, pelo menos o PHP tem, mas é inutil neste caso poiso php é todo interpretado no servidor, chegado ao cliente apenas o output. Já o javascript não sei se tem suporte para sockets, mas para dizer a verdade nunca vi nunhum script a abrir um socket, e tambem não me parece que os browsers permitam que o javascript aceda a recursos noutra máquina assim de qualquer maneira.

O ajax é uma possibilidade... mas não estou a ver como contornas o problema das actualizações. Terás que usar um esquema como o que disseste, a grande vantagem é podes pedir apenas os dados que precisas via ajax em vez actualizares  a página toda, é uma poupança de largura de banda gigantesca.

AJAX é uma palavra toda xpto, posto assim de uma forma simples significa que pões o teu browser a fazer pedidos HTTP normais ao servidor via javascript e depois usas tambem o javascript  para actualizar só uma parte da página.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Criares uma ligação persistente com um servidor numa porta específica com um protocolo específico. Para poderes ter sockets, podes usar Flash que dá para manipular através de JavaScript e vice versa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acredito que as duas linguagens têm suporte para sockets, pelo menos o PHP tem, mas é inutil neste caso poiso php é todo interpretado no servidor, chegado ao cliente apenas o output. Já o javascript não sei se tem suporte para sockets, mas para dizer a verdade nunca vi nunhum script a abrir um socket, e tambem não me parece que os browsers permitam que o javascript aceda a recursos noutra máquina assim de qualquer maneira.

O ajax é uma possibilidade... mas não estou a ver como contornas o problema das actualizações. Terás que usar um esquema como o que disseste, a grande vantagem é podes pedir apenas os dados que precisas via ajax em vez actualizares  a página toda, é uma poupança de largura de banda gigantesca.

AJAX é uma palavra toda xpto, posto assim de uma forma simples significa que pões o teu browser a fazer pedidos HTTP normais ao servidor via javascript e depois usas tambem o javascript  para actualizar só uma parte da página.

E Java?

Criares uma ligação persistente com um servidor numa porta específica com um protocolo específico. Para poderes ter sockets, podes usar Flash que dá para manipular através de JavaScript e vice versa.

É mais fácil aprender AJAX ou JAVA do zero ou trabalhar com flash?

P.S.: Já uso flash à algum tempo, mas nunca passei do básico (animações).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AJAX não resolve o teu problema, porque vai-te gastar praticamente a mesma bandwidth e processamento no servidor. No entanto, é uma solução para evitar refreshes completos.

Java ou Flash apenas interessariam se usados em vez do XMLHttpRequest, nos moldes que referi no post anterior.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou tentar resumir as alternativas até agora para não te perderes:

- AJAX: não é mais do que uma possibilidade de fazer pedidos ao servidor sem fazer um refresh completo na página. Está muito na moda agora, e o melhor exemplo é o gmail. Continuas a ter que fazer requests temporários, como disseste no primeiro post, mas a página não faz reload por completo, simplesmente aparece a informação actualizada se for caso para tal.

- Java: com Java permites criar uma ligação persistente com o servidor, e ele envia-te a informação sempre que houver uma nova mensagem. Poupas os pedidos constantes de refresh, o que é uma vantagem.

No entanto, o cliente tem que ter a máquina de Java instalada. Terá? Eu diria que a maior parte sim. Mas se não conheces nada de Java, aventurares-te nisto logo pode ser complicado. Não era de todo tempo perdido, saber trabalhar com Java faz parte do currículo de "qualquer um".

- Flash: same as Java, embora a probabilidade de alguém ter Flash instalado seja maior.

Eu não escolheria este caminho pelo simples facto de já teres admitido que não tens grandes conhecimentos em Flash, e aprender algo por aprender, Java >>>> Flash.

Não significa que não haja mais soluções, é possível que alguém apareça a sugerir algo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até as soluções já indicadas têm variantes, nomeadamente o java permite a implementação de um sistema de chat de 1001 formas.

Mas como já se deve estar a tornar claro, isto é mais um problema de quaõ acessíveis estão as tecnologias do que propriamente qual a melhor/mais facil.

Um sistema 100% ajax based precisa simplesmete de um browser com suporte para javascript que são bascamente todos.

Um sistema que use flash precisa que o cliente tenha o flash instalado.

Um sistema que use java precisa que o cliente tenha o java instalado e, dependendo do esquema que usares, precisa de algumas permissões.

Podes usar por exemplo um cliente de IRC em java (javairc por exemplo) embebido numa página e a ligar-se a uma canal de IRC qualquer, mas para isso o cliente tem que ter possibilidade de se ligar ao irc, o que nem sempre acontece.

Outras opções são usares um serviço que te permite por uma sala de chat no teu site sem programar absolutamente nada:

meebo.com, mibbit.com, etc.

Tirácio, se eu bem percebi o sistema do devianart, é o uso de ajax exactamente da forma que já aqui falamos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tirácio, se eu bem percebi o sistema do devianart, é o uso de ajax exactamente da forma que já aqui falamos.

Não. Tens uma componente Flash/Java/XPCOM (varia consoante o environment) que te garante uma ligação persistente entre um servidor escrito em C++ com ligação a MySQL que escuta na porta 9000, salvo erro, no host chat.deviantart.com, componente essa que tem "hookado" a vários eventos callbacks em JavaScript, que manipulam o conteúdo que tu vês. Com esse sistema, consegues muito facilmente modificar o cliente através da máquina do cliente por exemplo.

Uma referência do protocolo do dAmn pode ser encontrada aqui: http://botdom.com/wiki/DAmn

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo com o pedrotuga, isso é o que foi falado aqui..

Se fores implementar algo de raiz que comunique cliente-servidor com sockets, podes usar qualquer linguagem que tenha sockets para fazer o front-end e customizar o cliente..

Mas chega de offtopic.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo com o pedrotuga, isso é o que foi falado aqui..

O quê? O sistema do deviantART assentar no uso de AJAX? Isso é completamente errado. AJAX é nada mais nada menos que comunicações assincronas usando JavaScript para ir buscar XML, comunicações essas que assentam obrigatoriamente no protocolo HTTP. O dAmn não faz uso do HTTP como transporter, é tudo usando raw sockets, com um protocolo proprietario, cuja documentação postei ali em cima.

Se fores implementar algo de raiz que comunique cliente-servidor com sockets, podes usar qualquer linguagem que tenha sockets para fazer o front-end e customizar o cliente..

O "problema" é que isto é para correr num browser e quer-se que não haja refreshes completos de X em X tempo, pelo que não é "usar qualquer linguagem que tenha sockets", mas sim usar qualquer linguagem que tenha sockets que se possa manipular através de scripting num site, caso do Java e Flash/ActionScript.

Mas chega de offtopic.

Não é offtopic, estamos a responder à pergunta dele. :P
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O quê? O sistema do deviantART assentar no uso de AJAX?

Eu não disse isso.

O "problema" é que isto é para correr num browser e quer-se que não haja refreshes completos de X em X tempo, pelo que não é "usar qualquer linguagem que tenha sockets", mas sim usar qualquer linguagem que tenha sockets que se possa manipular através de scripting num site, caso do Java e Flash/ActionScript.

E isto já foi dito. Daí termos dito que já tinha sido falado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não disse isso.

Daí o ponto de interrogação (não tinha percebido com o que estavas a concordar).
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou aprender Java. :)

Pelo que percebi tenho de criar uma ligação entre os utilizadores e o servidor para que depois ele envie as mensagens a todos os conectados. Digam-me se estou errado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Comnvem estar ciente dos requisitos, se tiveres que ter suporte para java no servidor, os preços do alojamento disparam e a oferta é notóriamente menor.

0

Partilhar esta mensagem


Link 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