quinta-feira, 3 de dezembro de 2009

Web em Tempo real

Há algum tempo atrás, anos na verdade, eu estava trabalhando em um projeto VOIP e, entre outros, um dos desafios era mostrar na página web do usuário do serviço de telefonia um indicador de chamadas, algo que o avisasse que o telefone ia tocar, quem estava ligando, algo que permitisse ao usuário acompanhar os status das ligações correntes, entre outras coisas.
Apesar de parecer simples a princípio, o desafio se mostrou bastante interessante graças a uma restrição não muito comum (naquela época) quando se pensava em aplicações web, a informação tinha que acontecer praticamente em tempo real, ao mesmo tempo que mandávamos um pacote SIP para um device (um telefone IP ou um softphone) tínhamos que fazer push desta informação para uma página web! Como fazer?
Após algum tempo de pesquisa acabamos por optar por uma técnica hoje bastante difundida, o long polling e foram escritas algumas dezenas de linhas de código para fazer com que tudo funcionasse.
Os problemas começaram quando começamos a nos deparar com inesperados problemas de performance no servidor http, quando o código não funcionava em diferentes browsers, quando qualquer manutenção se tornava um tormento.
Depois de um bom tempo fora do projeto, hoje já nem sei se isto tudo ainda existe, se está em uso e muito menos como está sua arquitetura e seu código, mas por um destes acasos do destino o Sr Luis Cipriani, um dos malucos do núcleo de pesquisa e desenvolvimento da empresa onde trabalho atualmente, fez uma apresentação no DevInSampa tendo como tema "Web em tempo real", além de ser uma ótima apresentação, foi inevitável pensar: "era isso!".
A arquitetura, os requisitos, mesmo as decisões de design e implementação são simplesmente a melhor resposta ao problema do "status de chamada" que vi até agora. Vale a pena investir um tempo assistindo a apresentação e codando um exemplos das tecnologias citadas.

4 comentários:

  1. Aproveitando o ensejo, os "slides" da apresentação estão aqui: http://bit.ly/programandowebtemporeal

    Valeu pelo maluco! :-)

    ResponderExcluir
  2. Muito interessante,

    Eu que escuto sobre Real Time a meses pelo @lfcipriani, nunca tinha pensando do uso dela no mundo VOIP, é uma coisa incrivelmente simples mas é uma idéia muito boa.

    ResponderExcluir
  3. Pelo menos a interface do softphone era bonita pacas!!!! Hahahaha! Abração!

    ResponderExcluir