Confirmação de mensagens e garantias de entrega
Garanta que as mensagens não sejam perdidas silenciosamente adicionando confirmações, novas tentativas e idempotência para alcançar uma entrega confiável.
Confirmação de mensagens e garantias de entrega é uma aula grátis de WebSockets & Realtime Systems Programming no CoddyKit. Esta é a aula 4 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 WebSockets & Realtime Systems Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de WebSockets & Realtime Systems Programming inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Messages Can Vanish
A message can be lost if the socket drops mid-send, the server crashes, or the client reloads before processing. Without acknowledgements, neither side knows it happened.
Delivery Guarantee Levels
Three common guarantees:
- At-most-once: may lose, never duplicate
- At-least-once: never lose, may duplicate
- Exactly-once: never lose, never duplicate (hardest)
Application-Level Acks
WebSockets only confirm transport delivery, not processing. To know a message was handled, the receiver must send an explicit ack back.
Adding a Message Id
Tag each message with a unique id so acks can reference it.
const msg = { id: crypto.randomUUID(), type: 'order', data };
ws.send(JSON.stringify(msg));Sending the Ack
The receiver replies with an ack carrying the original id once it has safely processed the message.
ws.send(JSON.stringify({ type: 'ack', id: msg.id }));Tracking Unacked Messages
The sender keeps a map of in-flight messages until their ack arrives.
const pending = new Map();
pending.set(msg.id, msg);Retrying on Timeout
If no ack arrives within a timeout, resend the message. This is how at-least-once delivery is achieved.
setTimeout(() => {
if (pending.has(msg.id)) ws.send(JSON.stringify(msg));
}, 3000);The Duplicate Problem
Retries can deliver the same message twice (e.g. the ack was lost, not the message). At-least-once therefore implies the receiver may see duplicates.
Idempotency to the Rescue
Make processing idempotent: handling the same id twice has the same effect as once. Track seen ids and ignore repeats.
const seen = new Set();
if (seen.has(msg.id)) return;
seen.add(msg.id);
process(msg);Approaching Exactly-Once
True exactly-once is impossible to guarantee end-to-end, but at-least-once delivery plus idempotent handling gives the same practical result, which is what most systems use.
Best Practices
Build reliable delivery:
- Tag messages with unique ids
- Require application-level acks
- Retry unacked messages with a timeout
- Make processing idempotent to absorb duplicates
Quick Check
Test your delivery knowledge.
Recap
You added delivery guarantees to realtime messaging:
- Understand at-most/at-least/exactly-once
- Use message ids and application-level acks
- Retry unacked messages
- Combine at-least-once with idempotency
Your system no longer silently loses messages.
Aprenda WebSockets & Realtime Systems Programming com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 12
- Aulas
- 47
Perguntas Frequentes
A aula “Confirmação de mensagens e garantias de entrega” é grátis?
Sim — o texto completo de “Confirmação de mensagens e garantias de entrega” é 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 WebSockets & Realtime Systems Programming, atualize para CoddyKit PRO. O curso de WebSockets & Realtime Systems Programming inclui 4 aulas no total.
O que vou aprender em “Confirmação de mensagens e garantias de entrega”?
Garanta que as mensagens não sejam perdidas silenciosamente adicionando confirmações, novas tentativas e idempotência para alcançar uma entrega confiável. Você pratica WebSockets & Realtime Systems Programming 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 WebSockets & Realtime Systems Programming?
Nenhuma experiência prévia é necessária. WebSockets & Realtime Systems Programming 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 4 de 4.
Quanto tempo leva a aula “Confirmação de mensagens e garantias de entrega”?
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 WebSockets & Realtime Systems Programming?
Sim. Cada aula de WebSockets & Realtime Systems Programming 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
- Como lidar com desconexões e reconexões
- Propagação e recuperação robustas de erros
- Sinais de atividade e manutenção da conexão
- Confirmação de mensagens e garantias de entrega