जीआरपीसी में सर्वर से क्लाइंट तक इवेंट का प्रसारण
एक सर्वर से कनेक्ट होने वाले कई क्लाइंट वाले एप्लिकेशन बनाते समय, इवेंट को प्रसारित करना अक्सर आवश्यक होता है सभी जुड़े हुए ग्राहक। जीआरपीसी में, इसे प्राप्त करने के लिए कई दृष्टिकोण हैं।
विचार करने के लिए एक विकल्प दीर्घकालिक-मतदान दृष्टिकोण का उपयोग करना है। इसमें अपडेट के लिए क्लाइंट से समय-समय पर सर्वर का सर्वेक्षण कराना शामिल है। जब कोई घटना घटती है, तो सर्वर सभी कनेक्टेड क्लाइंट को सूचित करता है, जिससे उनकी पोलिंग कॉल नई जानकारी के साथ वापस आ जाती है।
पायथन में एक लंबे-पोलिंग दृष्टिकोण को लागू करने के लिए, निम्नलिखित कोड पर विचार करें (एक समान कार्यान्वयन संभव है गो जैसी अन्य भाषाएँ):
# SERVER
class UpdaterServer(UpdaterServicer):
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:]
response = GetUpdatesResponse()
for update in new_updates:
response.updates.add().CopyFrom(update)
response.update_index = req.last_received_update len(new_updates)
return response
# SEPARATE THREAD IN CLIENT
request = GetUpdatesRequest()
request.last_received_update = -1
while True:
stub = UpdaterStub(channel)
try:
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