WebSockets की जगह Server-Sent Events का उपयोग
(germano.dev)-
रीयल-टाइम web application बनाते समय आमतौर पर WebSocket का खयाल आता है, लेकिन SSE भी एक सरल विकल्प हो सकता है
-
WebSocket की समस्याएँ: यह HTTP-आधारित नहीं है, इसलिए HTTP के फायदे नहीं मिलते
→ compression संभव नहीं, HTTP/2 multiplexing का समर्थन सीमित, proxies इसे support नहीं करते, hijacking संभव
- Server-Sent Events(SSE)
→ यह server को client को low-latency push events भेजने की सुविधा देता है
→ यह HTML standard है और सभी browsers इसका समर्थन करते हैं (IE को छोड़कर)
→ WebSocket से अलग, SSE में data flow server से client की ओर एक-तरफ़ा होता है (दो-तरफ़ा communication चाहिए होने वाले games के लिए उपयुक्त नहीं)
→ यह HTTP के ऊपर काम करता है और किसी अलग protocol की ज़रूरत नहीं होती
5 टिप्पणियां
Load Balancer या Proxy environment में अक्सर SSE support की कमी होती है. (+Enterprise Firewall)
अगर आप Cloudflare या AWS CLB जैसी environments को ध्यान में रख रहे हैं, तो SSE अपनाने से पहले एक बार फिर से ज़रूर जाँच लें.
इसे GraphQL Subscription के लिए transport के रूप में WebSocket की जगह इस्तेमाल किया जाता है.
GraphQL SSE handler implementation: https://github.com/enisdenjo/graphql-sse
Subscription transport के रूप में SSE इस्तेमाल करने का उदाहरण: https://www.graphql-yoga.com/docs/features/subscriptions
Deno Deploy या Lambda जैसे विशेष environments में जब WebSockets को implement करना मुश्किल हो, तब यह एक अच्छा विकल्प हो सकता है. :-)
मैंने भी हाल ही में Deno Deploy में chat example देखते हुए पहली बार SSE के बारे में जाना.
https://github.com/lucacasonato/deploy_chat
अच्छा, ऐसा भी होता है। सीखने को मिला
इस लेख की टिप्पणियाँ और HN की टिप्पणियाँ भी साथ में देखें.
SSE का इस्तेमाल करने वाले लोगों के अनुभव, WebSocket से स्विच करने के मामले, SSE पर जाने के बाद फिर से WebSocket पर लौटने के मामले आदि—काफी तरह-तरह की राय हैं.
https://news.ycombinator.com/item?id=30312897
असल में लेख में SSE के फ़ायदों की काफी बात की गई है, लेकिन यह मुख्यतः कुछ खास scenarios में ही उपयोगी है.
आजकल WebSocket की तरफ भी बहुत सी libraries आ गई हैं, इसलिए implementation भी पहले से आसान हो गया है.
ऐसा दावा भी है.