Seja para construir um chat ou qualquer outra aplicação em tempo real os websockets são os queridinhos dos programadores e vamos falar muito sobre ele nesse artigo.
Índice
Introdução
Antes de mais nada, precisamos entender o que é websocket?
Websocket é uma tecnologia que permite abrir um canal de comunicação, usando o protocolo TCP, entre cliente e servidor. Então, com um canal de comunicação full-duplex aberto, nós podemos enviar e receber mensagens no momento exato em que determinadas ações acontecem, seja do lado cliente ou do servidor.
Porque não utilizar Nodejs?
Atualmente existe uma biblioteca chamada socket.io muito conhecida no mercado do mundo NodeJS pois trabalha muito bem com a tecnologia websockets faz um bom tempo. Possui ótimo suporte e tem versões bem maduras.
Contudo se você ou sua equipe não querem mais uma nova tecnologia na stack do projeto e caso você já trabalhe com PHP, existe a possibilidade de usar o próprio PHP para subir um servidor websockets com real time e conexões bi-direcionais utilizando o Ratchet.
Biblioteca WebSockets Ratchet
Se você trabalha com PHP já faz um tempo talvez já tenha se deparado com essa lib, do contrário vale a pena uma conferida no que ela tem a oferecer.
Nativamente o PHP manipula váriso tipos de conexões já faz um bom tempo e websockets é um desses tipos. Contudo essa biblioteca nos ajuda a manipular essas conexões e também criar um servidor que fique rodando o tempo inteiro recebendo e enviando mensagens.
No nosso exemplo veja que criamos uma interface simples para manipular as nossas conexões e também criamos um servidor que roda na porta 8080.
Vale lembrar que, como o PHP 7 tem alta performance ganha-se também performance na manipulação de milhares de conexões websockets tanto quanto aplicações nodejs. Portanto isso torna as duas tecnologias bem simulares quanto a performance e escalabilidade.
Um outro comparativo bacana que fizemos aqui foi sobre tecnologias mobile, clique aqui para saber mais.
Conclusão
Nós sabemos que o cara que domina o mercado atualmente quando se fala em real time é o nodejs com o socket.io, porém quando se trata de gerenciar uma nova stack dentro de um projeto que já está em produção fica muito mais complexo gerenciar tudo.
Entretanto sua equipe possa lidar tranquilamente com uma nova tecnologia fica ao critério do tech leader decidir. Mas se isso for impactar significativamente no tempo de entrega do projeto, vale a pena pensar em utilizar o próprio PHP com o Ratchet para criar um novo servidor real time para o seu projeto. Assim a stack continuaria a mesma pois você ainda usaria o PHP, em um novo projeto com o Ratchet.
Referência
WebSockets | MDN: https://developer.mozilla.org/pt-BR/docs/WebSockets
Documentação do Ratchet: http://socketo.me
Photo on Visual Hunt