Go (ou Golang) é uma linguagem interessante por muitos motivos. Vou escrever um post maior explicando as razões pelas as quais acredito que você deva aprendê-la. Por ora, quero mostrar em poucas linhas de código como criar um Websocket usando um pacote padrão da linguagem chamado net/http e a implementação de Websocket da Gorilla Web toolkit.
Este post parte do principio que você já tem o setup mínimo Go configurado (instalando o compilador, criado a estrutura de diretórios e declarado a variável GOPATH).
Passo um: Construindo um servidor Web em Go
Assumindo que você já esteja dentro do diretório da sua aplicação e tenha criando um arquivo main.go, vamos partir da seguinte estrutura:
Vamos começar a implementar nosso servidor Web usando o net/http. Para isso, precisamos declarar um path para a nossa aplicação responder as requisições em um handler para recebê-las e tratá-las:
Neste ponto do código, já possuímos tudo que precisamos para rodar nossa aplicação Web. Rodando um go run main.go, já podemos ver:
F-a-n-t-á-s-t-i-c-o.
Passo dois: Lidando com chamadas via Websocket
Como citei na introdução, vamos usar o pacote Websocket da Gorilla Web Toolkit. Vale dar uma olhada na documentação atualizada para instalar a dependência, mas por hora só precisamos fazer um go get:
[ecko_code_highlight language=”go”]go get github.com/gorilla/websocket[/ecko_code_highlight]
A próxima coisa que precisamos é adicionar um websocket.Upgrader ao nosso código. É através dele que vamos receber o socket para lidarmos com as chamadas.
Uma das propriedades do upgrader é checarmos a origem do tráfego. Por ora, vamos sempre retornar true e assim seguirmos com o post.
Agora vamos alterar nossa função handler para finalmente lermos a mensagem via Websocket, logarmos no console do Web server e, para propósito de demonstração, vamos retornar a mesma mensagem de volta para o cliente:
Para testarmos se tudo funcionou, primeiro vamos levantar o web server via:
[ecko_code_highlight language=”go”]go run main.go[/ecko_code_highlight]
E agora podemos usar Echo Test da websocket.org. Só precisamos alterar a Location apontando para o localhost:3000, como abaixo:
Feito isso, podemos conectar no nosso Websocket e enviar mensagens, recebendo as mesmas como resposta. E no console do Web server podemos ver os logs chegando:
[ecko_code_highlight language=”html”]Mensagem recebida: Rock it with HTML5 WebSocket[/ecko_code_highlight].
One Reply to “Construindo Websockets em Go”