Sunucuyu sürekli sorgulamadan uygulamalarımızdaki bilgileri gerçek zamanlı olarak nasıl güncel tutabiliriz?
Bu konsept etrafında, WebSockets veya MQTT gibi daha karmaşık protokoller dahil olmak üzere çeşitli teknolojiler vardır.
Bu yazıda, tarayıcınızda zaten mevcut olan daha basit bir şeyi keşfedeceğiz.
Tarayıcı Web API Sunucusu Gönderilen Olaylar , bir metin/olay akışına abone olmanıza ve bu olayları web uygulamanıza aktarmanıza olanak tanıyan bir EventSource JavaScript arayüzüne sahiptir .
Geleneksel olarak, bir web sayfasının yeni verileri alması için sunucuya bir istek göndermesi gerekir; yani sayfa, sunucudan veri ister. Sunucu tarafından gönderilen olaylarla, bir sunucunun mesajları web sayfasına göndererek herhangi bir zamanda bir web sayfasına yeni veriler göndermesi mümkündür. Bu gelen mesajlar , web sayfası içinde Olaylar + veri olarak değerlendirilebilir .
Olayları almak için tek yapmanız gereken, EventSource nesnesini metin/olay akışı sayfasının URL'sine yönlendirmek ve ilgilendiğiniz olay türü için dinleyicileri uygulamaktır.
Uyarı: zaman HTTP / 2 üzerinde kullanılmadığı , sınır olarak, birden fazla sekme açarken, özellikle acı verici olabilir maksimum açık bağlantı sayısı, bir sınırlama SSE uğrar Tarayıcı başına ve çok düşük bir sayıya ayarlanır (6) . Sorun, Chrome ve Firefox'ta "Düzeltilmeyecek" olarak işaretlendi . Bu sınır, tarayıcı + etki alanı başınadır; bu, tüm sekmelerde
www.example1.com6 SSE bağlantısı ve
www.example2.com( Stackoverflow başına ) için 6 SSE bağlantısı açabileceğiniz anlamına gelir . HTTP/2 kullanılırken , sunucu ve istemci arasında maksimum eşzamanlı HTTP akışı sayısı görüşülür (varsayılan olarak 100'dür).
Yalnızca sunucu olay gönderebilir, bu iki yönlü bir yol değildir.
Yalnızca MIME türünün text/event-stream olması gerekmez , ayrıca her bildirim bir çift yeni satırla sonlandırılan bir metin bloğu olarak gönderilir.
Bir mesaj oluşturmak için NodeJs kodunun kaba bir örneği şöyle görünür:
Tarayıcınızı doğrudan böyle bir sayfaya yönlendirirseniz, bunu örnek olarak alırsınız:
"event: message" veya "event: " aynı kavramı temsil eder. Neye abone olacağınızı belirtmezseniz, bu tür mesajlar alırsınız, yani olaysız veya olay "mesaj" olarak ayarlanmış mesajlar.
Örneklerde “est” veya “pdt” veya her ikisi gibi birden fazla etkinliğe abone olabilirsiniz.
Aboneliğiniz ne olursa olsun, her zaman “mesajı” veya belirtilmemiş olayları alırsınız.
Bunu OutSystems'te uygulamak kesinlikle ileridir.
Olayların kaynağı olarak birkaç parametreli bir bloğumuz ve EventSource'tan aldığımız şeyleri uygulamamıza aktarmak için birkaç blok olayına abone olmak için ne tür olaylara sahibiz.
Olay dinleyicilerini uygulamamızdaki olay tetikleme yöntemlerine eşleyen EventSource'un örneğini oluşturuyoruz:
Ve bu olayları OnDestroy'da yayınlıyoruz:
En basit ama en az kullanışlı demoyu buldum.
Sunucu tarafı, belirtilmemiş bir olayda her saniye bir UTC tarihi ve ayrıca doğu yaz saati tarihi ile bir “est” olayı ve son olarak pasifik yaz saati tarihi ile bir “pdt” olayı gönderir.
EventSource bloğu, NodeJ'lerde yapılan metin/olay akışı sayfama abone olacak şekilde ayarlandı ve ayrıca hem "est" hem de "pdt"ye abone olmak istiyorum.
Ardından olay işleyicilerini uygularız:
Sonuç, sunucu tarafından gönderilen tarih olaylarını gerçek zamanlı olarak gösteren bir web sayfasıdır.
Peki bunu nerede kullanabiliriz veya kullanmalıyız?
Öncelikle unutmayın, bu sunucudan istemcilere tek yönlü bir iletişim sistemidir, bu nedenle her iki yola da ihtiyacınız varsa WebSockets, MQTT veya benzerini kullanmanız daha iyi olacaktır.
İstemcinin mesajı gerçekten alıp almadığına dair bir QOS kontrolü yoktur, bu aslında bir yangın ve unut gibi bir şeydir.
Web uygulamalarınızın mutlak en son bilgileri gerçek zamanlı olarak getirmesini istediğiniz birçok kullanım durumu görüyorum.
Uygulamaya bir şey hakkında yeni bilgiler olduğunu söyleyen bir ping bile gönderebilirsiniz, bu yüzden gidin ve en son bilgileri alın. Uygulamanın değişenleri yenilemesi için ping hakkında yeterli bilgi gönderebilirsiniz (yine de QOS'u unutmayın).
Her zamanki gibi, bileşen ve demo demirhanede bulunabilir.
Şimdi tek yapmanız gereken OutSystems Geliştirici Konferansına kaydolmak.
ve açıkçası gidip bazı uygulamalar oluşturun.
Bir front-end geliştiricisi olarak şu başlıktaki makalelere rastlamış olmalısınız: Buna cevap verebilmek için “React 18'de Neler Yeni?” başlığına bakacağız. resmi plana göre. React 17'ye kadar, tek olay dinleyicileri birden fazla setState düzenleme özelliğine sahiptir.
React, Facebook'un dahili amaçları için tasarlanmış özensiz bir kitaplıktır. Bilinmeyen bir nedenle herkese açık hale getirdiler, ancak gerçekten kendilerine saklamaları gerekirdi.
Yaşadığın onca şeye rağmen hala burada olman harika değil mi? Şu anda ne yapıyorsun bilmiyorum ama dünyanın bir yerinde benim makalemi okuyorsun. Burada rastgele değilsin, değil mi? Muhtemelen başlığı gördünüz ve cevabı bilmek istediniz.
Anderson Yeniden Yüklendi. En son filmi La Crónica Francesa (2021), bu şekilde altyazılı olmak zorunda kalacaktı.
Bu yüzden, aslında bu makaleyi çocuksuz arkadaşları olanlar için yazdım. Ancak, bu herkes tarafından da okunabilir.
ˌoutˈsīdər/ belirli bir gruba ait olmayan bir kişi. (Bu, 4 yıl önce yazdığım ve asla yayınlamadığım, yaşadığım ve hala yaşadığım mücadeleyi mükemmel bir şekilde anlatan bir hikayeydi.
Lucille Ball ve Desi Arnaz 'I Love Lucy'de rol aldı. İşte, diziyi araştırırken Olmak Ricardos'un kadrosunu şaşırtan şey.
Ülke süperstarı Reba McEntire bir zamanlar grup üyeleri ve tur yöneticisi bir uçak kazasında öldüğünde korkunç bir trajedi yaşadı.
Elvis Presley'in başarısı, bir evcil hayvan dükkanının değerindeki yavru köpekleri satın almak gibi, başkalarının yapamayacağı şeyleri yapmasına izin verdi.
Michael Patrick King, 'Ve Aynen Böyle...'nin uçurumlardan kaçınarak 'Sex and the City'ye sadık kalacağını açıkladı.
Her hafta güncellenen mini bulmacamız, en sevdiğimiz HowStuffWorks okumalarımızı zeki ipuçlarıyla birleştiriyor!
Doğru deterjanı seçme konusunda endişelenmenize gerek kalmadan çamaşır yıkamak yeterince kötü. Peki en iyisi hangisi? Yoksa önemli mi?
Kentucky kırsalındaki Fugates ve Combs aileleri, genetik piyangoyu kaybettiler ve her ikisi de, evlenirken tenlerinin mavi görünmesine neden olan nadir bir çekinik özelliği paylaştılar. Bunun nedeni neydi? Ve ailelere ne oldu?
İki babasız erkek civciv, California akbabasını yok olmaktan kurtarmak için bir programda yetiştiriliyor. Böyle 'bakire' doğumlar nasıl mümkün olabilir?
Şaşırtıcı üretim değerlerine ve zengin tematik karmaşıklıklara sahip olduğundan emin olun, ancak bununla yüzleşelim: Game Of Thrones'u öne çıkaran şey, ana karakterleri öldürme isteğidir. The Warp Zone'daki bu müzik videosu, düşmüş tüm kahramanların (ve kötü adamların) Fall Out Boy, Katy Perry, Taylor Swift ve Bastille'in yardımıyla parlamak için son bir anının olmasını sağlıyor.
Dubai bir haritada öne çıkıyor. Birçok çöl şehri gibi, gelişmiş şehir bloklarının boş kuma çarptığı zorlu sınırları vardır.
İşte bugünün en iyi fırsatları. Kinja Fırsatları ile her gün harika fırsatlardan yararlanın, bir fırsatı kaçırmamak için bizi Facebook ve Twitter'da takip edin, harika ürünler hakkında bilgi almak için Kinja Gear'da ve en iyisini bulmamıza yardımcı olmak için Kinja Co-Op'ta bize katılın.
İklim değişikliği kontrol edilmeden devam ederse 2050 yılına kadar Acadia Ulusal Parkı'nda yaşam alanı olmayacak bir boreal bülbül. Acadia Ulusal Parkı, ötleğen cennetidir.
Cardi B ve Offset'in 3 yaşındaki kızı Kulture, yeni örgülü saç modelini Instagram'da sergiledi.
Selena Gomez daha önce arkadaşı Cara Delevingne için "Çok eğlenceli ve son derece maceracı" dedi.
Şarkıcı Perşembe günü fitness rutinini değiştirmeye karar verdi.
Jamie Dornan, Superman rolü için seçmelere katıldığını ancak Henry Cavill'e yenildiğini açıkladı; ve Marvel ile MCU'ya katılma hakkında konuştu.