lilydocs
HTTP APIWebSocketConsumer
Mesajlar2 dk okuma

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.

ACK action parçası
#[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.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod