Sonuçlar ve ACK
Action sonucunda ACK, caller event’i, yanıtsız bitiş veya bağlantı kapanışı arasında açık seçim yapın.
Mesaj action'ı Result<O, WebSocketActionError> döndürür. O, framework'ün ne göndereceğini belirleyen açık bir outcome'dur. () veya Result<(), _> mesaj action'ında implicit cevap değildir.
Sonucu seçin#
| Outcome | Davranış |
|---|---|
Ack::new(dto) |
İlişkili JSON ACK |
Ack::text(text) |
Typed text ACK |
Ack::binary(bytes) |
Typed binary ACK |
Emit::new("chat:received", dto) |
Caller'a yeni event |
NoReply |
Ek terminal application frame'i üretmeden bitiş |
CloseConnection::normal(reason) |
Normal bağlantı kapanışı |
CloseConnection::policy(reason) |
Policy nedeniyle kapanış |
Emit broadcast yapmaz. Başka istemcilere göndermek için action içinde client hedeflerini kullanın. NoReply, daha önce yapılan send veya DB işlemlerini geri almaz.
ACK yetkisi#
Gelen event bir ack_id taşımalıdır. Framework aynı ID ile cevap üretir; eksikse WS_MISSING_ACK_AUTHORITY hatası oluşur ve sağlıklı bağlantı açık kalabilir. Sunucu yeni bir ACK ID uydurmaz.
#[message("confirm")]
async fn confirm(&self, Payload(input): Payload<Greeting>)
-> Result<Ack<Greeting>, WebSocketActionError>
{
Ok(Ack::new(input))
}Import ve DTO'nun tamamı ilk uygulamadadır. ACK, seçtiğiniz action sonucunun ilişkili cevabıdır; sunucudan çıkan her yayının bütün alıcılara teslim onayı değildir.
Binary ve event ayrımı#
Ack::new(Vec<u8>) JSON sayı dizisi üretir. Byte içeriği için Ack::binary seçin. ClientProxy::send_binary ise envelope'u WebSocket Binary frame içinde taşır. Bu seçimler farklı katmanlardadır.
Emit::new tam route alır; başka namespace'e event göndermek için kullanılamaz. Hedef namespace doğrulaması çıkış sınırında da uygulanır. Envelope ve codec sayfaları içeriğin nasıl taşındığını anlatır.
Başarı hangi eşiği gösterir?#
Action sonucu hazırlama, normal middleware çıkışları, scope cleanup, terminal frame kabulü ve peer delivery ayrı eşiklerdir. Action Ok dönse de serialization, encode veya send başarısız olabilir.
DB commit başarılı olduktan sonra ACK kaybolabilir. İstemci işlemi tekrar gönderecekse uygulama request ID/idempotency modeline dayanmalıdır. Framework tam olarak bir iş etkisi veya peer'ın mesajı işlediği garantisi vermez. Hata ve Close seçimlerini hata sayfasıyla birlikte belirleyin.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.