>
Micro-SaaS & MVPs DeepSeek R1

Chat em Tempo Real com WebSockets, Salas e Histórico Persistido

Servidor Node.js + WebSocket com salas por projeto, histórico no Postgres, presença (quem está online) e reconnect automático no cliente.

EPEquipe Prompt Salvo ·Criado em 24 de set. de 2026 ·Atualizado em 24 de set. de 2026
0cópias
0joinhas
0favoritos

O prompt

Desenvolva um sistema de chat em tempo real completo em Node.js.

Parâmetros:
- Nome do Produto: {{nome_produto}}
- Banco para Histórico: postgresql (Prisma)
- Limite de Mensagens por Sala Retornadas no Reconnect: {{limite_reconnect}}

Requisitos:
1. Servidor Fastify + @fastify/websocket: clientes se conectam em ws://.../chat?token= e entram em salas por nome (ex.: /sala/projeto-x). Autenticação simples por token de usuário (middleware valida antes do upgrade).
2. Protocolo JSON bidirecional: cliente envia {type:'message', text, replyTo?}; servidor responde com broadcast {type:'message', from, text, ts} para a sala e ack {type:'ack', id} ao remetente. Mensagens >2000 chars são rejeitadas com erro claro.
3. Histórico persistido no Postgres (tabela messages: id, roomId, userId, text, createdAt); ao entrar na sala, o cliente recebe as últimas {{limite_reconnect}} mensagens antes de receber novas em tempo real.
4. Presença: servidor mantém mapa sala → usuários conectados e broadcasta {type:'presence', online:[...]} quando alguém entra/sai; endpoint REST GET /api/rooms/:id/members para consulta pontual.
5. Cliente (arquivo HTML único com JS embutido): lista de salas, área de mensagens com autor + horário, input com Enter para enviar, indicador 'conectando...' e reconnect automático com backoff exponencial (1s → 30s máx) que re-sincroniza o histórico.
6. Rate limit por usuário: 20 mensagens/10s — excedentes recebem {type:'error', code:'rate_limited'} e o input é desabilitado no cliente por 5s.

Como usar

  1. Substitua {{nome_produto}} e {{limite_reconnect}} (ex.: 50).
  2. Cole no DeepSeek/Cursor em uma pasta com package.json — servidor + cliente HTML são criados.
  3. npm run dev: abra o chat.html em duas abas, entre na mesma sala e converse; feche uma aba e veja a presença atualizar na outra.
  4. Para escalar além de 1 instância, peça à IA: 'adapte para Redis pub/sub' — o protocolo JSON já está pronto para isso.

Exemplo de saída

Servidor Fastify + @fastify/websocket (~200 linhas) + chat.html (~180): salas por nome com auth por token no upgrade, broadcast + ack com id, histórico Prisma/Postgres reenviando as últimas 50 mensagens na entrada, presença em tempo real (online:[...]), reconnect com backoff 1s→30s e rate limit 20 msg/10s com desabilitação do input no cliente.

Guias relacionados

Prompts para produtividade no trabalho (curadoria + análise)Reuniões, e-mails, planilhas e relatórios: os prompts do catálogo que mais economizam tempo, com o porquê de cada um.Prompts para programação e revisão de códigoBoilerplate, refatoração e code review com auditoria de segurança: como pedir código que compila de primeira.Prompt chains: encadear prompts para tarefas complexasQuando um prompt não basta: decomponha o trabalho em etapas com saída de uma alimentando a entrada da outra.
Usar na extensão