"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जीआरपीसी में सर्वर से क्लाइंट ब्रॉडकास्टिंग कैसे लागू करें?

जीआरपीसी में सर्वर से क्लाइंट ब्रॉडकास्टिंग कैसे लागू करें?

2024-11-05 को प्रकाशित
ब्राउज़ करें:661

How to Implement Server to Client Broadcasting in gRPC?

जीआरपीसी में प्रसारण: सर्वर से क्लाइंट संचार

जीआरपीसी कनेक्शन स्थापित करते समय, सर्वर से ईवेंट या अपडेट प्रसारित करना अक्सर आवश्यक होता है जुड़े हुए ग्राहक. इसे प्राप्त करने के लिए, विभिन्न तरीकों को नियोजित किया जा सकता है।

स्ट्रीम ऑब्जर्वेबल्स

एक सामान्य दृष्टिकोण सर्वर-साइड स्ट्रीम का उपयोग करना है। प्रत्येक कनेक्टेड क्लाइंट सर्वर के साथ अपनी स्वयं की स्ट्रीम स्थापित करता है। हालाँकि, सीधे अन्य सर्वर-क्लाइंट स्ट्रीम की सदस्यता लेना संभव नहीं है।

लॉन्ग-पोलिंग

एक वैकल्पिक विकल्प लॉन्ग-पोलिंग दृष्टिकोण को लागू करना है। इसमें क्लाइंट द्वारा नियमित अंतराल पर सर्वर पर लगातार सर्वेक्षण करना, नए अपडेट की जांच करना शामिल है। अपडेट प्राप्त होने पर, क्लाइंट को एक प्रतिक्रिया प्राप्त होगी और अगले मतदान अंतराल की प्रतीक्षा करनी होगी।

उदाहरण कार्यान्वयन

यहां एक उदाहरण दिया गया है कि आप लंबे समय तक मतदान कैसे लागू कर सकते हैं जीआरपीसी का उपयोग करना:

सर्वर-साइड कोड

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