जीआरपीसी में प्रसारण: सर्वर से क्लाइंट संचार
जीआरपीसी कनेक्शन स्थापित करते समय, सर्वर से ईवेंट या अपडेट प्रसारित करना अक्सर आवश्यक होता है जुड़े हुए ग्राहक. इसे प्राप्त करने के लिए, विभिन्न तरीकों को नियोजित किया जा सकता है।
स्ट्रीम ऑब्जर्वेबल्स
एक सामान्य दृष्टिकोण सर्वर-साइड स्ट्रीम का उपयोग करना है। प्रत्येक कनेक्टेड क्लाइंट सर्वर के साथ अपनी स्वयं की स्ट्रीम स्थापित करता है। हालाँकि, सीधे अन्य सर्वर-क्लाइंट स्ट्रीम की सदस्यता लेना संभव नहीं है।
लॉन्ग-पोलिंग
एक वैकल्पिक विकल्प लॉन्ग-पोलिंग दृष्टिकोण को लागू करना है। इसमें क्लाइंट द्वारा नियमित अंतराल पर सर्वर पर लगातार सर्वेक्षण करना, नए अपडेट की जांच करना शामिल है। अपडेट प्राप्त होने पर, क्लाइंट को एक प्रतिक्रिया प्राप्त होगी और अगले मतदान अंतराल की प्रतीक्षा करनी होगी।
उदाहरण कार्यान्वयन
यहां एक उदाहरण दिया गया है कि आप लंबे समय तक मतदान कैसे लागू कर सकते हैं जीआरपीसी का उपयोग करना:
सर्वर-साइड कोड
import threading
class UpdaterServer:
def __init__(self):
self.condition = threading.Condition()
self.updates = []
def post_update(self, update):
with self.condition:
self.updates.append(updates)
self.condition.notify_all()
def GetUpdates(self, req, context):
with self.condition:
while self.updates[req.last_received_update 1:] == []:
self.condition.wait()
new_updates = self.updates[req.last_received_update 1:]
return GetUpdatesResponse(
updates=new_updates,
update_index=req.last_received_update len(new_updates),
)
क्लाइंट-साइड कोड (अलग थ्रेड)
from threading import Event
def handle_updates(updates):
pass
event = Event()
request = GetUpdatesRequest(last_received_update=-1)
while not event.is_set():
try:
stub = UpdaterStub(channel)
response = stub.GetUpdates(request, timeout=60*10)
handle_updates(response.updates)
request.last_received_update = response.update_index
except grpc.FutureTimeoutError:
pass
इस दृष्टिकोण को लागू करके, कनेक्टेड क्लाइंट सर्वर से निरंतर अपडेट प्राप्त कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3