Penyiaran dalam gRPC: Komunikasi Pelayan kepada Pelanggan
Apabila membuat sambungan gRPC, selalunya perlu menyiarkan acara atau kemas kini daripada pelayan ke pelanggan yang berkaitan. Untuk mencapai matlamat ini, pelbagai pendekatan boleh digunakan.
Strim Observables
Satu pendekatan biasa ialah menggunakan strim sebelah pelayan. Setiap pelanggan yang disambungkan membuat aliran sendiri dengan pelayan. Walau bagaimanapun, melanggan strim pelayan-klien lain secara langsung tidak boleh dilaksanakan.
Undi Panjang
Pilihan alternatif ialah melaksanakan pendekatan tinjauan panjang. Ini melibatkan meminta pelanggan terus meninjau pelayan pada selang masa yang tetap, menyemak kemas kini baharu. Setelah menerima kemas kini, pelanggan akan menerima jawapan dan menunggu selang pengundian seterusnya.
Contoh Pelaksanaan
Berikut ialah contoh cara anda boleh melaksanakan tinjauan panjang menggunakan gRPC:
Kod Bahagian Pelayan
<code class="python">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), )</code>
Kod Bahagian Pelanggan (Benang Berasingan)
<code class="python">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</code>
Dengan melaksanakan pendekatan ini, pelanggan yang disambungkan boleh mendapatkan kemas kini daripada pelayan secara berterusan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penyiaran Pelayan kepada Pelanggan dalam gRPC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!