Programação de Rede em JavaScript: de Sockets a WebSocket

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que JavaScript na programação de rede?

Antigamente, JavaScript era apenas uma linguagem para animar botões e validar formulários. Hoje, é uma ferramenta poderosa para criar aplicações de rede. Programação de rede em JavaScript abre portas para o mundo em tempo real: chats, jogos online, streaming de dados, sistemas de monitoramento e até mesmo servidores web próprios.

Neste artigo, não vamos reescrever a documentação de forma tediosa. Vamos percorrer o caminho de uma simples requisição HTTP até uma conexão WebSocket completa. Você verá como o Node.js transforma uma linguagem de navegador em um motor de rede poderoso. Pronto? Vamos lá!



Fundamentos: HTTP e módulos do Node.js

Qualquer programação de rede em JavaScript começa com a compreensão dos protocolos. O mais popular é o HTTP. No navegador, você usa fetch() ou XMLHttpRequest, mas o lado do servidor exige uma abordagem diferente.



Criando um servidor HTTP simples

O Node.js fornece o módulo embutido http. Aqui está um exemplo mínimo que responde "Olá, mundo!" a qualquer requisição:

const http = require('http');

const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Olá, mundo! Programação de rede em JavaScript funcionando!');});

server.listen(3000, '127.0.0.1', () => { console.log('Servidor rodando em http://127.0.0.1:3000/');});

Execute este código com node server.js e abra o navegador. Você verá nossa mensagem. Simples, certo? Mas isso é só o começo. A verdadeira mágica acontece quando trabalhamos com sockets.



Trabalhando com sockets TCP em JavaScript

HTTP é um protocolo de camada de aplicação construído sobre TCP. Se você precisa de controle total sobre a transmissão de dados, use sockets JavaScript. No Node.js, o módulo net é responsável por isso.



Servidor TCP: recebendo dados

Imagine que você está escrevendo um servidor echo simples. O cliente se conecta, envia uma mensagem, e o servidor a retorna. Veja como fica:

const net = require('net');

const server = net.createServer((socket) => { console.log('Cliente conectado');

socket.on('data', (data) => { console.log('Recebido:', data.toString()); socket.write('Echo: ' + data.toString()); });

socket.on('end', () => { console.log('Cliente desconectado'); });});

server.listen(8080, () => { console.log('Servidor TCP ouvindo na porta 8080');});

Agora vamos escrever um cliente para este servidor. Cliente-servidor em JavaScript é uma via de mão dupla:

const net = require('net');

const client = net.createConnection({ port: 8080 }, () => { console.log('Conectado ao servidor'); client.write('Olá, servidor!');});

client.on('data', (data) => { console.log('Resposta do servidor:', data.toString()); client.end();});

client.on('end', () => { console.log('Desconectado do servidor');});

Execute primeiro o servidor, depois o cliente. Você verá os dados viajando de um lado para o outro. Esta é a base de todos os protocolos de rede JavaScript.



WebSocket: tempo real sem atrasos

HTTP e TCP são bons, mas têm um problema: para obter novos dados, o cliente precisa fazer requisições constantemente (polling). Isso é ineficiente. WebSocket em JavaScript resolve esse problema — após estabelecer a conexão, o próprio servidor pode enviar dados a qualquer momento.



WebSocket no Node.js (biblioteca ws)

Instale a biblioteca: npm install ws

Servidor:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8081 });

wss.on('connection', (ws) => { console.log('Cliente WebSocket conectado');

ws.on('message', (message) => { console.log('Recebido:',

Blogs

Book Recommendations