WebSockets वापरून रिअल-टाइम Angular Dashboards तयार करणे
बहुतेक डॅशबोर्ड्स संथ किंवा जुनाट वाटतात. वापरकर्ते एका पेजवर येतात आणि वाट पाहतात. ते रिफ्रेश बटण दाबतात किंवा सतत 'polling' चा सामना करतात, ज्यामुळे तुमचा सर्व्हर संथ होतो.
WebSockets हे चित्र बदलतात. क्लायंटने डेटा मागण्याऐवजी, सर्व्हर तो डेटा स्वतःहून पाठवतो (push करतो). हे लाईव्ह मेट्रिक्स, युजर ॲक्टिव्हिटी किंवा आर्थिक डेटासाठी आदर्श आहे.
Angular, RxJS आणि Signals वापरून प्रोडक्शन-रेडी रिअल-टाइम डॅशबोर्ड कसा तयार करायचा, ते खाली दिले आहे.
आर्किटेक्चर (The Architecture)
- कनेक्शन मॅनेज करण्यासाठी RxJS
webSocketवापरा. - एकाच कनेक्शनचा वापर अनेक कंपोनेंट्सना करण्यासाठी
shareReplayवापरा. - 'Single source of truth' साठी Angular Signals वापरा.
- कंपोनेंट्स साधे ठेवण्यासाठी Store pattern वापरा.
1. सर्विस लेअर (The Service Layer)
प्रत्येक कंपोनेंटसाठी नवीन कनेक्शन उघडू नका. rxjs/webSocket मधून webSocket subject वापरा. shareReplay वापरा जेणेकरून तुमचे संपूर्ण ॲप एकच स्ट्रीम शेअर करेल. यामुळे तुमचा सर्व्हर शेकडो अनावश्यक कनेक्शन्स हाताळण्यापासून वाचतो.
2. सिग्नल स्टोअर (The Signal Store) तुमच्या कंपोनेंट्समध्ये बिझनेस लॉजिक ठेवणे टाळा. तुमच्या सर्विसला सबस्क्राईब (subscribe) होईल असे एक Store तयार करा. हे Store तुमचे मेट्रिक्स आणि अलर्ट्स Signals मध्ये साठवते. त्यानंतर तुमचे कंपोनेंट्स फक्त हे सिग्नल्स वाचतात. यामुळे तुमचे UI वेगवान होते आणि टेस्टिंग करणे सोपे जाते.
3. क्लीन कंपोनेंट्स (Clean Components) तुमच्या कंपोनेंट्सनी फक्त एकच काम केले पाहिजे: डेटा रेंडर करणे. जर तुम्ही Signal-आधारित स्टोअर वापरले, तर तुमचा कंपोनेंट कोड अत्यंत छोटा राहतो. तो फक्त एक व्हॅल्यू वाचतो आणि ती स्क्रीनवर दाखवतो.
महत्त्वाच्या प्रो टिप्स (Key Pro Tips)
- कनेक्शन स्टेटस: नेहमी "Live" किंवा "Reconnecting" इंडिकेटर दाखवा. वापरकर्त्यांना त्यांचा डेटा सध्याचा (current) आहे की नाही हे माहित असणे आवश्यक आहे.
- एरर हँडलिंग: री-कनेक्शनसाठी exponential backoff वापरा. सर्व्हर डाऊन असताना त्यावर सतत रिक्वेस्टचा मारा करू नका.
- डेटा मॅनेजमेंट: तुमच्या अलर्ट ॲरेवर (alert arrays)
.slice()वापरा. यामुळे जास्त मेमरी न वापरता तुमचा इतिहास (history) उपयुक्त राहतो.
जेव्हा तुम्हाला टू-वे कम्युनिकेशन (two-way communication) आवश्यक असते, तेव्हा WebSockets सर्वोत्तम काम करतात. जर तुम्हाला फक्त डेटा प्राप्त करायचा असेल, तर सोप्या पर्यायासाठी Server-Sent Events (SSE) चा विचार करा.
वापरकर्त्यांना रिफ्रेश बटण दाबण्यास भाग पाडणे थांबवा.
स्रोत: https://dev.to/rigole/building-real-time-dashboards-in-angular-with-websockets-a-complete-guide-10he