Como usar Websockets no PHP

Websockets com PHP e Ratchet

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.

Exemplo de script que mostra como iniciar um servidor real time utilizando o Ratchet.
Exemplo de script que mostra como iniciar um servidor real time utilizando o Ratchet.

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

Julio Alves
administrator
Julio Alves é desenvolvedor web com mais de 8 anos de experiência, amante de PHP, Javascript, NodeJS, Ionic e ReactNative. Graduado em Sistemas de Informação pela Faculdade Estácio FIC do Ceará. Acredita que para se tornar um bom programador é preciso sobretudo ser esforçado e aberto para aprender todos os dias.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Lançamento Novo Curso de PHP 7
Lançamento Novo Curso de PHP 7