Noções básicas de WebSocket
Comunique-se em tempo real e nos dois sentidos
Noções básicas de WebSocket é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Comunicação bidirecional em tempo real
HTTP segue o modelo de requisição e resposta: o cliente pergunta, o servidor responde e a conexão (logicamente) termina. Para bate-papo, painéis em tempo real e jogos, você precisa de um canal persistente e bidirecional. É isso que os WebSockets oferecem.
O handshake de atualização
Uma conexão WebSocket começa como uma requisição HTTP normal com cabeçalhos especiais:
Upgrade: websocketConnection: Upgrade
O servidor responde 101 Switching Protocols, e o soquete TCP é reutilizado para quadros totalmente duplex.
Por que não usar apenas sondagem
Antes dos WebSockets, os aplicativos usavam sondagem (requisições repetidas) ou sondagem prolongada. Ambos desperdiçam largura de banda e aumentam a latência. Os WebSockets mantêm uma única conexão aberta, para que qualquer um dos lados possa enviar dados instantaneamente.
Quadros, não requisições
Depois da atualização, os dados trafegam como quadros leves, em vez de mensagens HTTP. Os quadros podem ser de texto ou binários, e há quadros de controle para ping/pong e encerramento.
Duplex completo
Ao contrário do HTTP, os dois pares podem enviar dados a qualquer momento, sem esperar uma resposta. Um servidor pode enviar uma notificação assim que algo mudar, e o cliente pode enviar uma entrada simultaneamente.
ws versus wss
Assim como http/https, os WebSockets têm dois esquemas:
ws://texto sem criptografiawss://sobre TLS (use este em produção)
Suporte da biblioteca padrão
A biblioteca padrão do Go não tem uma implementação de WebSocket apenas em net/http. A comunidade usa github.com/gorilla/websocket ou nhooyr.io/websocket. Abordaremos a gorilla na próxima lição.
import "github.com/gorilla/websocket"Um modelo mental
Imagine um WebSocket como uma chamada telefônica:
- Discar = o handshake de upgrade do HTTP
- A linha aberta = a conexão persistente
- Falar nos dois sentidos = quadros bidirecionais
- Desligar = o quadro de fechamento
Tipos de mensagens
Dois tipos de quadros de dados são os mais importantes:
- Texto transporta UTF-8 (geralmente JSON)
- Binário transporta bytes brutos (protobuf, imagens)
Os quadros de controle (ping, pong, fechamento) gerenciam a própria conexão.
Onde os WebSockets são ideais
São ótimos para:
- Conversas e presença
- Cotações de negociações ou resultados esportivos em tempo real
- Edição colaborativa
- Estado de jogos multijogador
Para comunicação apenas em uma direção, do servidor para o cliente, os eventos enviados pelo servidor podem ser mais simples.
Executável: enquadrando a ideia
O código de WebSocket precisa de uma biblioteca externa; por isso, aqui está uma analogia usando a biblioteca padrão: uma função que classifica uma mensagem como texto ou binário, ilustrando os tipos de quadros.
package main
import (
"fmt"
"unicode/utf8"
)
func frameType(data []byte) string {
if utf8.Valid(data) {
return "text"
}
return "binary"
}
func main() {
fmt.Println(frameType([]byte("hello")))
fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}Verificação rápida
Teste sua compreensão dos conceitos básicos de WebSocket.
Recapitulação
Você aprendeu os fundamentos de WebSocket:
- Eles fornecem comunicação persistente e bidirecional
- Eles começam com um handshake de upgrade do HTTP (resposta 101)
- Os dados fluem em quadros de texto ou binários; os quadros de controle gerenciam a conexão
- Use
wss://em produção; o Go depende de bibliotecas como gorilla/websocket
Perguntas Frequentes
A aula “Noções básicas de WebSocket” é grátis?
Sim — o texto completo de “Noções básicas de WebSocket” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Noções básicas de WebSocket”?
Comunique-se em tempo real e nos dois sentidos Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Noções básicas de WebSocket”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Noções básicas de WebSocket
- Uso de gorilla/websocket
- Transmissão de mensagens
- Gerenciamento de conexões