Go
Go

Construindo Websockets em Go


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:

go get github.com/gorilla/websocket

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:

go run main.go

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:

Mensagem recebida: Rock it with HTML5 WebSocket

.

 

 


I'm Pedro Mendes, a passionate developer and technology enthusiast. This blog covers programming and technology in the broadest sense possible. It's the place I collect my thoughts, work and findings to share with the public.

View Comments