WebSockets
WebSockets é uma tecnologia relativamente nova que possibilita comunicação full-duplex em sites ou aplicações web. Uma aplicação web padrão usa o protocolo HTTP, que é um protocolo de comunicação half-duplex. O servidor está sempre em modo de escuta e atende requisições recebidas dos clientes. No protocolo HTTP convencional não existe uma forma do servidor enviar dados diretamente aos clientes. Para atualizar a visualização do cliente no navegador, o cliente deve continuamente perguntar ao servidor e obter as novas atualizações, se houver. Esse método é chamado de polling do servidor. O polling normalmente é feito usando um timer em JavaScript que envia regularmente requisições Ajax para o servidor. Se houver novas atualizações, os dados são enviados de volta ao cliente.
Existem algumas desvantagens em usar o método de polling:
Os clientes devem enviar continuamente requisições Ajax ao servidor, o que significa que o servidor precisa lidar com um grande número de requisições Ajax se houver muitos clientes.
Atualizações só podem ocorrer quando há uma requisição Ajax. Não há como atualizar o cliente de forma assíncrona. Por exemplo, se um timer estiver configurado para disparar a cada 30 segundos, as atualizações do cliente só poderão ocorrer em intervalos de 30 segundos.
Para contornar essa limitação, a tecnologia WebSocket foi introduzida há cerca de 10 anos. Na verdade, WebSocket não é um protocolo novo em princípio — é essencialmente outro canal TCP aberto entre cliente e servidor. Ao contrário do HTTP, onde conexões TCP podem ser temporárias, uma conexão WebSocket é persistente (sempre aberta) e pronta para enviar e receber dados. O navegador do cliente é capaz de receber mensagens do servidor através de uma conexão WebSocket, permitindo que o servidor envie mensagens instantâneas aos clientes, de modo que mecanismos de polling não sejam mais necessários.