Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Burada kullanılan terimlerle ilgili ayrıntılar temel kavramlar makalesinde açıklanmıştır.
İstemci tarafı SDK'sı, geliştiricinin iş akışını hızlandırmayı amaçlar; daha ayrıntılı olarak,
- istemci bağlantılarını yönetmeyi kolaylaştırır
- istemciler arasında ileti göndermeyi kolaylaştırır
- İstenmeyen istemci bağlantısı bırakıldıktan sonra otomatik olarak yeniden denenir
- bağlantı bırakıldıktan sonra iletileri sayı ve sırayla güvenilir bir şekilde teslim ediyor
Diyagramda gösterildiği gibi, istemcileriniz Web PubSub kaynağınızla WebSocket bağlantıları kurar.
İlk Adımlar
Önkoşullar
- Python 3.8+
- Azure aboneliği
- Web PubSub kaynağı
1. azure-messaging-webpubsubclient paketini yükleyin
pip install azure-messaging-webpubsubclient
2. Web PubSub kaynağınıza bağlanma
İstemci, hizmetine bağlanmak ve hizmetle kimlik doğrulaması yapmak için bir kullanır Client Access URL ve bu da desenini izler wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. bir istemcinin elde etmek için Client Access URLbirkaç yolu olabilir. Bu hızlı başlangıç için, gösterilen Azure portalından kopyalayıp yapıştırabilirsiniz.
Diyagramda gösterildiği gibi, istemciye ileti gönderme ve adlı group1belirli bir gruba katılma izinleri vardır.
from azure.messaging.webpubsubclient import WebPubSubClient
client = WebPubSubClient("<client-access-url>")
with client:
# The client can join/leave groups, send/receive messages to and from those groups all in real-time
...
3. Gruplara katılma
İstemci yalnızca katıldığı gruplardan ileti alabilir ve iletileri alırken mantığı belirtmek için bir geri çağırma eklemeniz gerekir.
from azure.messaging.webpubsubclient.models import CallbackType
# ...continues the code snippet from above
# Registers a listener for the event 'group-message' early before joining a group to not miss messages
group_name = "group1";
client.subscribe(CallbackType.GROUP_MESSAGE, lambda e: print(f"Received message: {e.data}"));
# A client needs to join the group it wishes to receive messages from
client.join_group(groupName);
4. Gruba ileti gönderme
# ...continues the code snippet from above
# Send a message to a joined group
client.send_to_group(group_name, "hello world", "text");
# In the Console tab of your developer tools found in your browser, you should see the message printed there.
Örnekler
ve stopped olayları için connecteddisconnected geri çağırmalar ekleme
Bir istemci Web PubSub kaynağınıza başarıyla bağlandığında,
connectedolayı tetikler.from azure.messaging.webpubsubclient.models import CallbackType client.subscribe(CallbackType.CONNECTED, lambda e: print(f"Connection {e.connection_id} is connected"))İstemcinin bağlantısı kesildiğinde ve bağlantı kurtarılamıyorsa,
disconnectedolayı tetikler.from azure.messaging.webpubsubclient.models import CallbackType client.subscribe(CallbackType.DISCONNECTED, lambda e: print(f"Connection disconnected: {e.message}"))İstemci
stoppedbağlantısı kesildiğinde ve istemci yeniden bağlanmaya çalışmayı durdurduğunda olay tetikleniyor. Bu durum genellikleclient.stop()çağrıldıktan veyaauto_reconnectdevre dışı bırakıldıktan veya yeniden bağlanmaya çalışmak için belirtilen sınıra ulaşıldıktan sonra gerçekleşir. İstemciyi yeniden başlatmak istiyorsanız durdurulan olaydaclient.start()çağırabilirsiniz.from azure.messaging.webpubsubclient.models import CallbackType client.subscribe(CallbackType.STOPPED, lambda : print("Client has stopped"))
İstemci, uygulama sunucusundan veya birleştirilmiş gruplardan gelen iletileri tüketir
İstemci, uygulama sunucunuzdan veya gruplarınızdan gelen iletileri kullanmak için geri çağırmalar ekleyebilir. Unutmayın, olay için group-message istemci yalnızca katıldığı grup iletilerini alabilir.
from azure.messaging.webpubsubclient.models import CallbackType
# Registers a listener for the "server-message". The callback is invoked when your application server sends message to the connectionID, to or broadcast to all connections.
client.subscribe(CallbackType.CONNECTED, lambda e: print(f"Received message {e.data}"))
# Registers a listener for the "group-message". The callback is invoked when the client receives a message from the groups it has joined.
client.subscribe(CallbackType.GROUP_MESSAGE, lambda e: print(f"Received message from {e.group}: {e.data}"))
Yeniden katılma hatasını işleme
İstemcinin bağlantısı kesildiğinde ve kurtarılamadığında, Web PubSub kaynağınızda tüm grup bağlamları temizlenir. Bu, istemci yeniden bağlandığında gruplara yeniden katılması gerektiği anlamına gelir. Varsayılan olarak, istemcide auto_rejoin_groups seçeneği etkindir.
Ancak, auto_rejoin_groupssınırlamalarını bilmeniz gerekir.
- İstemci yalnızca başlangıçta istemci kodu tarafından katılmış olan gruplara sunucu tarafı koduyla değil yeniden katılabiliyor.
- "Gruba yeniden katılma" işlemleri çeşitli nedenlerle başarısız olabilir, örneğin istemcinin gruplara katılma izni yoktur. Böyle durumlarda, bu hatayı işlemek için bir geri çağırma eklemeniz gerekir.
from azure.messaging.webpubsubclient.models import CallbackType
# By default auto_rejoin_groups=True. You can disable it by setting to False.
client = WebPubSubClient("<client-access-url>", auto_rejoin_groups=True);
# Registers a listener to handle "rejoin-group-failed" event
client.subscribe(CallbackType.REJOIN_GROUP_FAILED, lambda e: print(f"Rejoin group {e.group} failed: {e.error}"))
İşlem ve yeniden deneme
Varsayılan olarak, client.join_group(), client.leave_group(), client.send_to_group(), client.send_event() gibi işlem üç yeniden denemeye sahiptir. Anahtar sözcük bağımsız değişkenleri aracılığıyla yapılandırabilirsiniz. Tüm yeniden denemeler başarısız olursa bir hata oluşur. Web PubSub hizmetinin işlemi yinelenenleri kaldırabilmesi için önceki yeniden denemelerle aynı ack_id geçirerek yeniden denemeye devam edebilirsiniz.
try:
client.join_group(group_name)
except SendMessageError as e:
client.join_group(group_name, ack_id=e.ack_id)
Sorun giderme
Günlükleri etkinleştirme
Bu kitaplığı kullanırken hata ayıklama günlüklerini almak için aşağıdaki ortam değişkenini ayarlayabilirsiniz.
export AZURE_LOG_LEVEL=verbose
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için
Canlı İzleme
Web PubSub kaynağınız aracılığıyla canlı ileti trafiğini incelemek için Azure portalındaki Canlı İzleme aracını kullanın.