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.
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ı url
olması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 AccessKey
kimlik 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
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 IHubContext
kullanarak 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.