Çözümlenecek verinin sınırı
Kamera tarayıcısı, görüntü karesini piksel verisine dönüştürüyor. Worker’ın ihtiyacı; kareyi temsil eden buffer, genişlik, yükseklik ve isteğin kimliği. Arayüzün tüm durumu bu sınıra taşınmıyor. Mesajın küçük ve açık bir sözleşmesi olması, iki tarafın sorumluluğunu görünür kılıyor.
Worker içindeki adımlar
Worker, gelen buffer üzerinden Uint8ClampedArray oluşturuyor ve jsQR çağrısıyla çözümleme yapıyor. Çözümleme sonuç verisi veya boş bir değer üretebiliyor. Hata yakalanırsa yine aynı istek kimliğiyle bir yanıt dönüyor. Böylece ana taraf, yanıtın bir QR sonucu mu yoksa işlenmiş bir hata mı olduğunu ayırt edebiliyor.
İstek kimliğinin görevi
Ana tarama modülünde bekleyen istekler kimlikleriyle eşleştiriliyor. Worker’ın id alanını geri göndermesi bu nedenle gerekli. Bir mesajın yalnızca sonucun kendisini taşıması, eşzamanlı akışta o sonucun hangi bekleyen işe ait olduğunu açıklamaya yetmez. Bu örnekte kimlik, iki taraf arasındaki bağlantının parçası.
Ölçüm ile mimariyi ayırmak
İşi ayrı bir Worker’da yürütmek kaynakta görülen bir mimari tercih. Bunun kaç FPS kazandırdığı ise ayrı bir ölçüm konusu. Ölçüm planında aynı kamera karesi, aynı cihaz ve aynı çözümleme ayarlarıyla karşılaştırma yapmak gerekir. QR üretim doğrulamasında kullanılan diğer Worker ile kamera tarayıcısının Worker’ı da farklı sorumluluklara sahip.