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.
Azure SignalR Hizmeti gönderilen iletilere yanıt vermek için SignalR tetikleyici bağlamasını kullanın. İşlev tetiklendiğinde, işleve geçirilen iletiler json nesnesi olarak ayrıştırılır.
SignalR Hizmeti sunucusuz modda SignalR Hizmeti, istemciden İşlev Uygulamasına ileti göndermek için Yukarı Akış özelliğini kullanır. İşlev Uygulaması bu iletileri işlemek için SignalR Hizmeti tetikleyici bağlamasını kullanır. Genel mimari aşağıda gösterilmiştir:
Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.
Örnek
Aşağıdaki C# modlarından birini kullanarak bir C# işlevi oluşturabilirsiniz:
- Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. .NET ve .NET Framework için uzun vadeli destek (LTS) ve LTS olmayan sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış bir çalışan işlemi gereklidir.
- İşlem içi model: Azure İşlevleri çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
- C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.
Önemli
İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.
Aşağıdaki örnekte, istemcilerden bir ileti olayı alan ve ileti içeriğini günlüğe kaydeden bir C# işlevi gösterilmektedir.
[Function(nameof(OnClientMessage))]
public static void OnClientMessage(
[SignalRTrigger("Hub", "messages", "sendMessage", "content", ConnectionStringSetting = "SignalRConnection")]
SignalRInvocationContext invocationContext, string content, FunctionContext functionContext)
{
var logger = functionContext.GetLogger(nameof(OnClientMessage));
logger.LogInformation("Connection {connectionId} sent a message. Message content: {content}", invocationContext.ConnectionId, content);
}
Önemli
C# yalıtılmış çalışanındaki SignalR Hizmeti bağlamalarının sınıf tabanlı modeli, C# çalışan modelinin sınırlaması nedeniyle SignalR tetikleyicilerini yazma şeklinizi iyileştirmez. Sınıf tabanlı model hakkında daha fazla bilgi için bkz . Sınıf tabanlı model.
SignalR tetikleyicisi şu anda Java için desteklenmiyor.
function.json dosyasındaki bağlama verileri aşağıdadır:
{
"type": "signalRTrigger",
"name": "invocation",
"hubName": "hubName1",
"category": "messages",
"event": "SendMessage",
"parameterNames": [
"message"
],
"direction": "in"
}
app.generic("function1",
{
trigger: { "type": "signalRTrigger", "name": "invocation", "direction": "in", "hubName": "hubName1", "event": "SendMessage", "category": "messages" },
handler: (triggerInput, context) => {
context.log(`Receive ${triggerInput.Arguments[0]} from ${triggerInput.ConnectionId}.`)
}
})
Tam PowerShell örnekleri beklemede.
Python kodu şu şekildedir:
import logging
import json
import azure.functions as func
def main(invocation) -> None:
invocation_json = json.loads(invocation)
logging.info("Receive {0} from {1}".format(invocation_json['Arguments'][0], invocation_json['ConnectionId']))
Özellikler
hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları işlevi tanımlamak için özniteliğini kullanırSignalRTrigger. C# betiği bunun yerine bir function.json yapılandırma dosyası kullanır.
Aşağıdaki tabloda özniteliğin SignalRTrigger özellikleri açıklanmaktadır.
| Öznitelik özelliği | Açıklama |
|---|---|
| HubName | bu değer, işlevin tetiklenebilmesi için SignalR hub'ının adına ayarlanmalıdır. |
| Kategori | Bu değer, işlevin tetiklenebilmesi için ileti kategorisi olarak ayarlanmalıdır. Kategori aşağıdaki değerlerden biri olabilir:
|
| Olay | Bu değer, işlevin tetiklenebilmesi için iletilerin olayı olarak ayarlanmalıdır. İletiler kategorisi için olay, istemcilerin gönderdiği hedefçağrı iletisidir. Bağlantılar kategorisi için yalnızca bağlı ve bağlantısı kesilmiş kullanılır. |
| ParameterNames | (İsteğe bağlı) Parametrelere bağlanan adların listesi. |
| ConnectionStringSetting | varsayılan AzureSignalRConnectionStringolarak olarak SignalR Hizmeti bağlantı dizesi içeren uygulama ayarının veya ayarlar koleksiyonunun adı. |
Ek Açıklamalar
Şu anda SignalR tetikleyicisi için desteklenen bir Java ek açıklaması yoktur.
Yapılandırma
Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.
| function.json özelliği | Açıklama |
|---|---|
| türü | olarak ayarlanmalıdır SignalRTrigger. |
| yön | olarak ayarlanmalıdır in. |
| ad | Tetikleyici çağırma bağlam nesnesi için işlev kodunda kullanılan değişken adı. |
| hubName | bu değer, işlevin tetiklenebilmesi için SignalR hub'ının adına ayarlanmalıdır. |
| kategori | Bu değer, işlevin tetiklenebilmesi için ileti kategorisi olarak ayarlanmalıdır. Kategori aşağıdaki değerlerden biri olabilir:
|
| olay | Bu değer, işlevin tetiklenebilmesi için iletilerin olayı olarak ayarlanmalıdır. İletiler kategorisi için olay, istemcilerin gönderdiği hedefçağrı iletisidir. Bağlantılar kategorisi için yalnızca bağlı ve bağlantısı kesilmiş kullanılır. |
| parameterNames | (İsteğe bağlı) Parametrelere bağlanan adların listesi. |
| connectionStringSetting | varsayılan AzureSignalRConnectionStringolarak olarak SignalR Hizmeti bağlantı dizesi içeren uygulama ayarının veya ayarlar koleksiyonunun adı. |
Tam örnekler için Örnek bölümüne bakın.
Kullanım
Yönetilen kimlik tabanlı bağlantılar
En iyi güvenlik için, işlev uygulamanız paylaşılan gizli dizi anahtarı içeren bir bağlantı dizesi kullanmak yerine Azure SignalR hizmetine bağlanırken yönetilen kimlikleri kullanmalıdır. Daha fazla bilgi için bkz. Microsoft Entra tarafından yönetilen kimliklerle kaynakları Azure SignalR Hizmeti istekleri yetkilendirme.
Yük
Tetikleyici giriş türü ya da InvocationContext özel bir tür olarak bildirilir. öğesini seçerseniz InvocationContext, istek içeriğine tam erişim elde edersiniz. Özel bir tür için çalışma zamanı JSON istek gövdesini ayrıştırarak nesne özelliklerini ayarlamaya çalışır.
ÇağrıBağlamı
InvocationContext , aşağıdaki özellikleri içeren bir SignalR hizmetinden gönderilen iletideki tüm içeriği içerir:
| Özellik | Açıklama |
|---|---|
| Bağımsız değişkenler | İletiler kategorisi için kullanılabilir. Çağırma iletisindeki bağımsız değişkenleri içerir |
| Hata | Bağlantısı kesilmiş olay için kullanılabilir. Bağlantı hiçbir hata olmadan kapatıldıysa veya hata iletilerini içeriyorsa Boş olabilir. |
| Merkez | İletinin ait olduğu hub adı. |
| Kategori | İletinin kategorisi. |
| Etkinlik | İletinin olayı. |
| ConnectionId | İletiyi gönderen istemcinin bağlantı kimliği. |
| Kullanıcı Kimliği | İletiyi gönderen istemcinin kullanıcı kimliği. |
| Üst Bilgiler | İsteğin üst bilgileri. |
| Sorgu | İstemciler hizmete bağlandığında isteğin sorgusu. |
| Talepler | İstemcinin talepleri. |
ParameterNames kullanma
özelliği ParameterNamesSignalRTrigger , çağrı iletilerinin bağımsız değişkenlerini işlevlerin parametrelerine bağlamanıza olanak tanır. Bağlama ifadelerinin bir parçası olarak tanımladığınız adı diğer bağlamada veya kodunuzda parametre olarak kullanabilirsiniz. Bu, bağımsız değişkenlerine InvocationContexterişmek için daha kullanışlı bir yol sağlar.
Azure İşlevi'nde iki bağımsız değişkenle broadcastyöntemini message1 çağırmaya çalışan bir JavaScript SignalR istemciniz olduğunu varsayalım: . message2
await connection.invoke("broadcast", message1, message2);
ayarladıktan parameterNamessonra, tanımladığınız adlar istemci tarafında gönderilen bağımsız değişkenlere karşılık gelir.
[SignalRTrigger(parameterNames: new string[] {"arg1, arg2"})]
Ardından, arg1 öğesinin içeriğini message1ve arg2 içeriğini message2içerir.
ParameterNames Husus -lar
Parametre bağlaması için sıra önemlidir. kullanıyorsanız ParameterNamesiçindeki sıra ParameterNames , istemcide çağırdığınız bağımsız değişkenlerin sırasıyla eşleşir. C# dilinde öznitelik [SignalRParameter] kullanıyorsanız, Azure İşlevi yöntemlerindeki bağımsız değişkenlerin sırası istemcilerdeki bağımsız değişkenlerin sırasıyla eşleşir.
ParameterNamesve özniteliği [SignalRParameter] aynı anda kullanılamaz, aksi durumda bir özel durum alırsınız.
SignalR Hizmeti tümleştirmesi
SignalR Hizmeti SignalR Hizmeti tetikleyici bağlaması kullanırken İşlev Uygulamasına erişmek için bir URL gerekir. URL, SignalR Hizmeti tarafındaki Yukarı Akış Ayarları'nda yapılandırılmalıdır.
SignalR Hizmeti tetikleyicisi kullanılırken URL basit ve aşağıdaki gibi biçimlendirilmiş olabilir:
<Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
, Function_App_URL İşlev Uygulamasının Genel Bakış sayfasında bulunabilir ve API_KEY Azure İşlevi tarafından oluşturulur. öğesini İşlev Uygulaması'nın Uygulama anahtarları dikey penceresinden alabilirsiniz.API_KEYsignalr_extension
Bir SignalR Hizmeti birden fazla İşlev Uygulamasını birlikte kullanmak istiyorsanız, yukarı akış karmaşık yönlendirme kurallarını da destekleyebilir. Yukarı akış ayarları bölümünde daha fazla ayrıntı bulabilirsiniz.
Adım adım örnek
İşlev Uygulamasında SignalR Hizmeti tetikleyici bağlama ve yukarı akış özelliğiyle sohbet odası dağıtmak için GitHub'daki örneği izleyebilirsiniz: Çift yönlü sohbet odası örneği