
रीयल-टाइम वेब सुविधाओं के लिए या तोकी आवश्यकता होती है वेबसॉकेटयासर्वर-भेजे गए इवेंट (एसएसई). दोनों डेटा को सर्वर से क्लाइंट तक भेजते हैं, लेकिन वे अलग-अलग तरीके से काम करते हैं। 2026 में, एसएसई ने एआई स्ट्रीमिंग के लिए लोकप्रियता हासिल की है जबकि वेबसॉकेट द्विदिश संचार के लिए आवश्यक बना हुआ है। यह मार्गदर्शिका कोड के साथ दोनों को समझाती है और आपको चुनने में मदद करती है।
📋 Table of Contents
वेबसॉकेट: पूर्ण डुप्लेक्स
WebSockets एक सतत टीसीपी कनेक्शन बनाता है। क्लाइंट और सर्वर दोनों किसी भी समय संदेश भेज सकते हैं – सच पूर्ण-डुप्लेक्स। इनके लिए उपयोग किया जाता है: चैट ऐप्स, सहयोगी उपकरण, लाइव गेमिंग, ट्रेडिंग प्लेटफॉर्म।
# FastAPI WebSocket server
from fastapi import FastAPI, WebSocket
app = FastAPI()
connected = []
@app.websocket('/ws')
async def websocket_endpoint(ws: WebSocket):
await ws.accept()
connected.append(ws)
try:
while True:
data = await ws.receive_text()
# Broadcast to all clients
for client in connected:
await client.send_text(f'Message: {data}')
except:
connected.remove(ws)
// Browser WebSocket client
const ws = new WebSocket('wss://example.com/ws');
ws.onopen = () => console.log('Connected');
ws.onmessage = (e) => console.log('Received:', e.data);
ws.onerror = (e) => console.error('Error:', e);
ws.onclose = () => console.log('Disconnected');
// Send message
ws.send('Hello server!');
सर्वर-भेजे गए इवेंट (एसएसई): वन-वे पुश
SSE एक नियमित HTTP कनेक्शन का उपयोग करता है जहां सर्वर घटनाओं को स्ट्रीम करता है। क्लाइंट डेटा वापस नहीं भेज सकता (उसके लिए अलग HTTP अनुरोधों का उपयोग करें)। डिस्कनेक्ट होने पर स्वतः पुनः कनेक्ट हो जाता है। HTTP/2 मल्टीप्लेक्सिंग पर काम करता है। इसके लिए उपयोग किया जाता है: लाइव फ़ीड, एआई प्रतिक्रिया स्ट्रीमिंग, सूचनाएं, प्रगति बार।
# FastAPI SSE server
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import asyncio
app = FastAPI()
@app.get('/stream')
async def stream():
async def event_generator():
for i in range(10):
yield f'data: Message {i}\n\n'
await asyncio.sleep(1)
return StreamingResponse(
event_generator(),
media_type='text/event-stream'
)
// Browser SSE client
const evtSource = new EventSource('/stream');
evtSource.onmessage = (e) => {
console.log('Received:', e.data);
};
evtSource.onerror = (e) => {
console.error('Error:', e);
// EventSource auto-reconnects after error
};
// Close when done
evtSource.close();
एसएसई के साथ एआई स्ट्रीमिंग (2026 पैटर्न)
एलएलएम एपीआई (क्लाउड, ओपनएआई) एसएसई के माध्यम से प्रतिक्रियाएं स्ट्रीम करते हैं। क्लाउड स्ट्रीमिंग को ब्राउज़र पर अग्रेषित करने का पैटर्न यहां दिया गया है।
import anthropic
from fastapi.responses import StreamingResponse
client = anthropic.Anthropic()
@app.post('/ask')
async def ask(question: str):
async def generate():
with client.messages.stream(
model='claude-sonnet-4-5',
max_tokens=1024,
messages=[{'role': 'user', 'content': question}]
) as stream:
for text in stream.text_stream:
yield f'data: {text}\n\n'
yield 'data: [DONE]\n\n'
return StreamingResponse(generate(), media_type='text/event-stream')
तुलना
- वेबसॉकेट:द्विदिशात्मक, लगातार टीसीपी, बाइनरी या टेक्स्ट, मैन्युअल पुनः कनेक्ट
- एसएसई:केवल सर्वर-टू-क्लाइंट, HTTP, केवल टेक्स्ट, ऑटो-रीकनेक्ट, सरल
- वेबसॉकेट ओवरहेड:भारी सेटअप (अपग्रेड हैंडशेक, राज्य प्रबंधन)
- एसएसई ओवरहेड:न्यूनतम – किसी भी HTTP सर्वर के साथ काम करता है, CDN-अनुकूल
कब कौन सा उपयोग करें
- वेबसॉकेट:चैट, मल्टीप्लेयर गेम, सहयोगात्मक संपादन (Google डॉक्स-शैली)
- एसएसई:एआई प्रतिक्रिया स्ट्रीमिंग, लाइव फ़ीड, सूचनाएं, प्रगति अपडेट
- न ही:हर 30+ पर मतदान करना आसान है और अक्सर कम-आवृत्ति अपडेट के लिए पर्याप्त होता है
निष्कर्ष
2026 में, अधिकांश वास्तविक समय सुविधाओं के लिए एसएसई सही विकल्प है – सरल, HTTP/2 पर काम करता है, सीडीएन-अनुकूल, और एआई स्ट्रीमिंग के लिए बिल्कुल सही। वेबसॉकेट तभी चुनें जब आपको सच्चे द्विदिशीय संचार की आवश्यकता हो। SSE से प्रारंभ करें और यदि आप इसकी सीमा तक पहुँचते हैं तो WebSockets में अपग्रेड करें।
🔗 Share this article
✍️ Leave a Comment