Java için Azure WebPubSub istemci kitaplığı

Not

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.

Web PubSub kaynağıyla WebSocket bağlantısı kuran istemcileri gösteren ekran görüntüsü

Önemli

Ham bağlantı dizesi yalnızca tanıtım amacıyla bu makalede görünür.

bağlantı dizesi, uygulamanızın Azure Web PubSub hizmetine erişmesi için gereken yetkilendirme bilgilerini içerir. bağlantı dizesi içindeki erişim anahtarı, hizmetinizin kök parolasına benzer. Üretim ortamlarında erişim anahtarlarınızı her zaman koruyun. Anahtarlarınızı güvenli bir şekilde yönetmek ve döndürmek ve bağlantınızın WebPubSubServiceClientgüvenliğini sağlamak için Azure Key Vault kullanın.

Erişim anahtarlarını diğer kullanıcılara dağıtmaktan, sabit kodlamaktan veya başkalarının erişebileceği herhangi bir yerde düz metin olarak kaydetmekten kaçının. Ele geçirilmiş olabileceklerini düşünüyorsanız anahtarlarınızı döndürün.

Başlarken

Önkoşullar

  • Java Geliştirme Seti (JDK) sürüm 8 veya üstü
  • Azure aboneliği
  • Mevcut bir Web PubSub örneği

Paketi ürünününüze ekleme

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-webpubsub-client</artifactId>
    <version>1.0.0-beta.1</version>
</dependency>

İstemcinin kimliğini doğrulama

İstemci, hizmete bağlanmak ve hizmetle kimlik doğrulaması yapmak için bir Client Access URL kullanır. URL, desenini izler wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. almanın Client Access URLbirden çok yolu vardır. Hızlı başlangıç olarak, Azure portalından kopyalayıp yapıştırabilirsiniz ve üretim için genellikle URL'yi oluşturmak için bir anlaşma sunucusuna ihtiyacınız vardır. Ayrıntılara bakın.

Azure portalından kullanma Client Access URL

Hızlı bir başlangıç olarak Azure portalına gidebilir ve Anahtarlar dikey penceresinden İstemci Erişimi URL'sini kopyalayabilirsiniz.

Azure portalında İstemci Erişim Url'sini alma işlemini gösteren ekran görüntüsü

Diyagramda gösterildiği gibi, istemciye belirli gruplara ileti gönderme ve belirli grupları birleştirme izni verilir. İstemci izni hakkında daha fazla bilgi edinmek için bkz . izinler.

WebPubSubClient client = new WebPubSubClientBuilder()
    .clientAccessUrl("<client-access-url>")
    .buildClient();

Oluşturmak için anlaşma sunucusunu kullanma Client Access URL

Üretimde istemci genellikle bir anlaşma sunucusundan öğesini Client Access URL getirir. sunucusu öğesini connection string tutar ve aracılığıyla Client Access URLöğesini WebPubSubServiceClient oluşturur. Örnek olarak kod parçacığı yalnızca tek bir işlemin içinde nasıl oluşturulduğunu Client Access URL gösterir.

Ham bağlantı dizesi yalnızca tanıtım amacıyla bu makalede görünür. Üretim ortamlarında erişim anahtarlarınızı her zaman koruyun. Anahtarlarınızı güvenli bir şekilde yönetmek ve döndürmek ve bağlantınızın WebPubSubServiceClientgüvenliğini sağlamak için Azure Key Vault kullanın.

// WebPubSubServiceAsyncClient is from com.azure:azure-messaging-webpubsub
// create WebPubSub service client
WebPubSubServiceAsyncClient serverClient = new WebPubSubServiceClientBuilder()
    .connectionString("<connection-string>")
    .hub("<hub>>")
    .buildAsyncClient();

// wrap WebPubSubServiceAsyncClient.getClientAccessToken as WebPubSubClientCredential
WebPubSubClientCredential clientCredential = new WebPubSubClientCredential(Mono.defer(() ->
    serverClient.getClientAccessToken(new GetClientAccessTokenOptions()
            .setUserId("<user-name>")
            .addRole("webpubsub.joinLeaveGroup")
            .addRole("webpubsub.sendToGroup"))
        .map(WebPubSubClientAccessToken::getUrl)));

// create WebPubSub client
WebPubSubClient client = new WebPubSubClientBuilder()
    .credential(clientCredential)
    .buildClient();

ve WebPubSubClientayırt WebPubSubServiceClient etmek için özellikler.

Sınıf Adı WebPubSubClient WebPubSubServiceClient
Paket Adı azure-messaging-webpubsub-client azure-messaging-webpubsub
Özellikler İstemci tarafında kullanılır. İletileri yayımlayın ve iletilere abone olun. Sunucu tarafında kullanılır. İstemci oluşturma Client Access URL ve yönetme.

Örnekler

Sunucudan ve gruplardan gelen iletileri kullanma

İstemci, sunucudan ve gruplardan gelen iletileri kullanmak için geri çağırmalar ekleyebilir. İstemcilerin yalnızca katıldığı grup iletilerini alabileceğini unutmayın.

client.addOnGroupMessageEventHandler(event -> {
    System.out.println("Received group message from " + event.getFromUserId() + ": "
        + event.getData().toString());
});
client.addOnServerMessageEventHandler(event -> {
    System.out.println("Received server message: "
        + event.getData().toString());
});

, connectedve disconnected olayları için stoppedgeri çağırmalar ekleme

Hizmete bir istemci bağlantısı bağlandığında, connected olay tetikler.

İstemci bağlantısının bağlantısı kesildiğinde ve kurtarılamadığında olay disconnected tetikleniyor.

bir istemci durdurulduğunda, bu da istemci bağlantısının kesildiği ve istemcinin yeniden bağlanmayı denemeyi durdurduğu anlamına gelir, stopped olay tetikler. Bu genellikle çağrıldıktan veya devre dışı bırakıldıktan client.StopAsync()sonra AutoReconnect gerçekleşir. İstemciyi yeniden başlatmak istiyorsanız, olayı çağırabilirsiniz client.StartAsync()Stopped .

client.addOnConnectedEventHandler(event -> {
    System.out.println("Connection is connected: " + event.getConnectionId());
});
client.addOnDisconnectedEventHandler(event -> {
    System.out.println("Connection is disconnected");
});
client.addOnStoppedEventHandler(event -> {
    System.out.println("Client is stopped");
});

İşlem ve yeniden deneme

Varsayılan olarak, , client.joinGroup(), client.leaveGroup()client.sendToGroup() gibi client.sendEvent()işlem üç reties'e sahiptir. Öğesini kullanarak WebPubSubClientBuilder.retryOptions() değiştirebilirsiniz. Tüm yeniden denemeler başarısız olursa bir hata oluşur. Önceki yeniden denemelerle aynı ackId işlemi geçirerek yeniden denemeye devam edebilirsiniz, böylece hizmet işlemi aynı ackIdile yinelenenleri kaldırmaya yardımcı olabilir.

try {
    client.joinGroup("testGroup");
} catch (SendMessageFailedException e) {
    if (e.getAckId() != null) {
        client.joinGroup("testGroup", e.getAckId());
    }
}

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 @azure/günlükçü paketi belgelerine bakabilirsiniz.

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.