Aracılığıyla paylaş


veri düzlemi REST API başvurusu Azure SignalR Hizmeti

klasik istemci/sunucu desenine ek olarak, Azure SignalR Hizmeti sunucusuz mimarinizle gerçek zamanlı işlevselliği tümleştirmenize yardımcı olacak bir dizi REST API sağlar.

Not

Azure SignalR Hizmeti, REST API'lerinin yalnızca ASP.NET Core SignalR aracılığıyla bağlanan istemcileri yönetmek için kullanılmasını destekler. ASP.NET SignalR aracılığıyla bağlanan istemciler, şu anda desteklenmeyen farklı bir veri protokolü kullanır.

Azure İşlevleri ile tipik sunucusuz mimari

Aşağıdaki diyagramda, Azure İşlevleri ile Azure SignalR Hizmeti kullanan tipik bir sunucusuz mimari gösterilmektedir.

Azure SignalR Hizmeti için tipik sunucusuz mimari diyagramı.

  • negotiate İşlev bir anlaşma yanıtı döndürür ve tüm istemcileri Azure SignalR Hizmeti yönlendirir.
  • İşlev, broadcast Azure SignalR Hizmeti için REST API'yi çağırır. Azure SignalR Hizmeti iletiyi tüm bağlı istemcilere yayınlar.

Sunucusuz mimaride istemcilerin Azure SignalR Hizmeti kalıcı bağlantıları vardır. Trafiği işleyecek bir uygulama sunucusu olmadığından istemciler modundadır LISTEN . Bu modda, istemciler ileti alabilir ancak ileti gönderemez. Azure SignalR Hizmeti, geçersiz bir işlem olduğundan ileti gönderen tüm istemcilerin bağlantısını keser.

bu GitHub deposunda Azure İşlevleri ile Azure SignalR Hizmeti kullanmanın eksiksiz bir örneğini bulabilirsiniz.

Anlaşma uç noktasını uygulama

İstemcilerin hizmete bağlanabilmesi için yeniden yönlendirme anlaşması yanıtı döndüren bir işlev uygulamanız negotiate gerekir.

Tipik bir anlaşma yanıtı şu biçime sahiptir:

{
  "url": "https://<service_name>.service.signalr.net/client/?hub=<hub_name>",
  "accessToken": "<a typical JWT token>"
}

DeğeraccessToken, kimlik doğrulaması bölümünde açıklanan algoritmayla oluşturulur. Tek fark, talebin aud ile aynı urlolmasıdır.

Hub URL'sine bağlanmak için SignalR istemcisini kullanmaya devam edebilmeniz için anlaşma API'nizi içinde https://<hub_url>/negotiate barındırmanız gerekir. İstemci bağlantılarını kullanarak istemcileri Azure SignalR Hizmeti yönlendirme hakkında daha fazla bilgi edinin.

REST API sürümleri

Aşağıdaki tabloda desteklenen tüm REST API sürümleri gösterilmektedir. Ayrıca her API sürümü için Swagger dosyasını sağlar.

API sürümü Durum Bağlantı noktası Belgeler Belirtim
20220601 En geç Standart Makale Swagger dosyası
1.0 Dengeli Standart Makale Swagger dosyası
1.0-preview Geçersiz Standart Makale Swagger dosyası

Aşağıdaki tabloda kullanılabilir API'ler listelenir.

API Yol
Hedef hub'a bağlı tüm istemcilere ileti yayınlama POST /api/v1/hubs/{hub}
Hedef kullanıcıya ait tüm istemcilere ileti yayınlama POST /api/v1/hubs/{hub}/users/{id}
Belirli bir bağlantıya ileti gönderme POST /api/v1/hubs/{hub}/connections/{connectionId}
Verilen connectionId ile bağlantının mevcut olup olmadığını denetleyin GET /api/v1/hubs/{hub}/connections/{connectionId}
İstemci bağlantısını kapatma DELETE /api/v1/hubs/{hub}/connections/{connectionId}
Hedef gruptaki tüm istemcilere ileti yayınlama POST /api/v1/hubs/{hub}/groups/{group}
Verilen grubun içinde istemci bağlantısı olup olmadığını denetleyin GET /api/v1/hubs/{hub}/groups/{group}
Belirli bir kullanıcı için bağlı istemci bağlantısı olup olmadığını denetleyin GET /api/v1/hubs/{hub}/users/{user}
Hedef gruba bağlantı ekleme PUT /api/v1/hubs/{hub}/groups/{group}/connections/{connectionId}
Hedef gruptan bağlantı kaldırma DELETE /api/v1/hubs/{hub}/groups/{group}/connections/{connectionId}
Bir kullanıcının hedef grupta var olup olmadığını denetleyin GET /api/v1/hubs/{hub}/groups/{group}/users/{user}
Hedef gruba kullanıcı ekleme PUT /api/v1/hubs/{hub}/groups/{group}/users/{user}
Bir kullanıcıyı hedef gruptan kaldırma DELETE /api/v1/hubs/{hub}/groups/{group}/users/{user}
Bir kullanıcıyı tüm gruplardan kaldırma DELETE /api/v1/hubs/{hub}/users/{user}/groups

REST API’yi kullanma

Azure SignalR Hizmeti'da AccessKey aracılığıyla kimlik doğrulaması

Her HTTP isteğinde, Azure SignalR Hizmeti ile kimlik doğrulaması yapmak için JSON Web Belirteci (JWT) içeren bir yetkilendirme üst bilgisi gerekir.

İmzalama algoritması ve imza

HS256, yani HMAC-SHA256, imzalama algoritması olarak kullanılır.

AccessKey Oluşturulan JWT'yi imzalamak için Azure SignalR Hizmeti örneğinin bağlantı dizesi değerini kullanın.

Talepler

Aşağıdaki talepler JWT'ye dahil edilmelidir.

Talep türü Gereklidir Açıklama
aud true Sondaki eğik çizgi ve sorgu parametreleri dahil değil, HTTP isteği URL'nizle aynı olması gerekir. Örneğin, bir yayın isteğinin hedef kitlesi şöyle görünmelidir: https://example.service.signalr.net/api/v1/hubs/myhub.
exp true Bu belirtecin süresi dolduğunda dönem süresi.

Microsoft Entra belirteci aracılığıyla kimlik doğrulaması

aracılığıyla AccessKeykimlik doğrulamasına benzer şekilde, Microsoft Entra belirteci kullanarak http isteğinin kimliğini doğrulamak için JWT gerekir.

Fark, bu senaryoda Microsoft Entra ID'nin JWT'yi oluşturmasıdır. Daha fazla bilgi için bkz . Microsoft Entra belirteçleri oluşturmayı öğrenin.

Kullanılan kimlik bilgisi kapsamı olmalıdır https://signalr.azure.com/.default.

ayrıca, istemcinizden veya sunucunuzdan Azure SignalR Hizmeti isteği yetkilendirmek için rol tabanlı erişim denetimi (RBAC) kullanabilirsiniz. Daha fazla bilgi için bkz. Azure SignalR Hizmeti için Microsoft Entra Id ile erişimi yetkilendirme.

Kullanıcıyla ilgili REST API'yi çağırmak için istemcilerinizin her biri kendilerini Azure SignalR Hizmeti olarak tanımlamalıdır. Aksi takdirde, Azure SignalR Hizmeti kullanıcı kimliğinden hedef bağlantıları bulamazsınız.

Azure SignalR Hizmeti bağlanırken her istemcinin JWT'sine bir nameid talep ekleyerek istemci tanımlaması elde edebilirsiniz. Azure SignalR Hizmeti sonra her istemci bağlantısı için kullanıcı kimliği olarak talebin değerini nameid kullanır.

Örnek

Bu GitHub deposunda, Azure SignalR Hizmeti'da el ile REST API HTTP isteği oluşturmayı gösteren eksiksiz bir konsol uygulaması bulabilirsiniz.

Microsoft.Azure.SignalR.Management'ı kullanarak da benzer arabirimlerini IHubContextkullanarak Azure SignalR Hizmeti iletileri yayımlayabilirsiniz. Örnekleri bu GitHub deposunda bulabilirsiniz. Daha fazla bilgi için bkz. Azure SignalR Hizmeti Yönetim SDK'sı.

Sınırlamalar

Şu anda REST API istekleri aşağıdaki sınırlamalara sahiptir:

  • Üst bilgi boyutu en fazla 16 KB'dir.
  • Gövde boyutu en fazla 1 MB'tır.

1 MB'tan büyük iletiler göndermek istiyorsanız Modlu persistent Hizmet Yönetimi SDK'sını kullanın.