Voltar para o Blog Iniciante 5 min

Guia Rápido: Como Usar WebSockets com Node.js

Aprenda a configurar e utilizar WebSockets para comunicação em tempo real com Node.js e a biblioteca ws.

O que são WebSockets?

WebSockets permitem comunicação bidirecional entre o cliente e o servidor em tempo real, sem a necessidade de requisições HTTP repetitivas.

Configurando o Projeto

Crie um projeto Node.js e instale a biblioteca ws:

mkdir websocket-demo && cd websocket-demo
npm init -y
npm install ws

Criando o Servidor WebSocket

Crie um arquivo server.js e adicione:

const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });

server.on('connection', ws => {
  console.log('Novo cliente conectado');
  ws.send('Bem-vindo ao servidor WebSocket!');

  ws.on('message', message => {
    console.log('Mensagem recebida:', message);
    ws.send('Você disse: ' + message);
  });
});

console.log('Servidor WebSocket rodando em ws://localhost:8080');

Criando o Cliente WebSocket

Crie um arquivo index.html e adicione:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>WebSocket Cliente</title>
</head>
<body>
  <h1>Teste de WebSocket</h1>
  <input id="mensagem" type="text" placeholder="Digite uma mensagem">
  <button onclick="enviarMensagem()">Enviar</button>
  <ul id="mensagens"></ul>
  <script>
    const socket = new WebSocket('ws://localhost:8080');
    const lista = document.getElementById('mensagens');
    
    socket.onmessage = event => {
      const li = document.createElement('li');
      li.textContent = event.data;
      lista.appendChild(li);
    };

    function enviarMensagem() {
      const input = document.getElementById('mensagem');
      socket.send(input.value);
      input.value = '';
    }
  </script>
</body>
</html>

Testando a Aplicação

Execute o servidor com:

node server.js

Abra o index.html no navegador e envie mensagens para testar a comunicação WebSocket.

Próximos Passos

Experimente integrar WebSockets com autenticação e banco de dados para criar aplicações interativas e dinâmicas.