適用於 Azure Functions 的 SignalR Service 繫結
這組文章說明如何使用 Azure Functions 中的 SignalR 服務系結,向聯機至 Azure SignalR Service 的客戶端驗證和傳送實時訊息。 Azure Functions 運行時間 2.x 版和更新版本支援 SignalR Service 的輸入和輸出系結。
動作 | 類型 |
---|---|
處理 SignalR 服務的訊息 | 觸發程序繫結 |
傳回服務端點 URL 和存取令牌 | 輸入繫結 |
傳送 SignalR 服務訊息和管理群組 | 輸出繫結 |
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
藉由安裝此 NuGet 套件,將擴充功能新增至您的專案。
安裝搭售方案
SignalR Service 擴充功能是延伸模組套件組合的一部分,其指定於您的host.json項目檔中。 當您建立以 3.x 版或更新版本為目標的專案時,應該已安裝此套件組合。 若要深入瞭解,請參閱 延伸模組套件組合。
新增相依性
若要在 Java 函式中使用 SignalR 服務批注,您必須將相依性新增至 azure-functions-java-library-signalr 成品(1.0 版或更新版本)至 您的pom.xml 檔案。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-signalr</artifactId>
<version>1.0.0</version>
</dependency>
連線
您可以使用 連接字串 或 Microsoft Entra 身分識別來連線到 Azure SignalR Service。
Connection string
如需如何擷取 Azure SignalR 服務的 連接字串 的指示,請參閱 Azure SignalR Service 中的連接字串
此 連接字串 應該儲存在名稱AzureSignalRConnectionString
為 的應用程式設定中。 您可以使用系結組態的 屬性來自定義應用程式設定名稱 connectionStringSetting
。
身分識別型連線
如果您使用 1.7.0 版或更新版本,而不是使用具有秘密的 連接字串,您可以讓應用程式使用 Microsoft Entra 身分識別。
首先,您應該確定您的Microsoft Entra 身分識別具有 SignalR 服務擁有者角色。
然後,您會使用通用前置詞 AzureSignalRConnectionString
來定義設定。 您可以使用系結組態的 屬性來自定義前置詞名稱 connectionStringSetting
。
在這裡模式中,設定包含下列專案:
屬性 | 環境變數範本 | 描述 | 必要 | 範例值 |
---|---|---|---|---|
服務 URI | AzureSignalRConnectionString__serviceUri |
服務端點的 URI。 當您只設定「服務 URI」時,擴充功能會嘗試使用 DefaultAzureCredential 類型向服務進行驗證。 | Yes | https://mysignalrsevice.service.signalr.net |
權杖認證 | AzureSignalRConnectionString__credential |
定義如何為連線取得權杖。 如果您已部署的 Azure 函式想要使用受控識別驗證,則此設定應設定為 managedidentity 。 僅在裝載環境中有受控識別可用時,這個值才有效。 |
No | managedidentity |
Client ID | AzureSignalRConnectionString__clientId |
當 credential 設定為 managedidentity 時,可將這個屬性設定為指定在取得權杖時要使用的使用者指派身分識別。 屬性接受的用戶端識別碼,對應至指派給應用程式的使用者指派身分識別。 指定資源識別碼和用戶端識別碼無效。 如果沒有指定,則會使用系統指派的身分識別。 不應該設定 credential 時,這個屬性會以不同的方式用於本機開發案例。 |
No | 00000000-0000-0000-0000-000000000000 |
資源識別碼 | AzureSignalRConnectionString__managedIdentityResourceId |
當 credential 設定為 managedidentity 時,可將這個屬性設定為指定在取得權杖時所要使用的資源身分識別。 屬性會接受的資源識別碼是對應至使用者定義受控識別的資源識別碼。 指定資源識別碼和用戶端識別碼無效。 如果未指定這兩個身分識別,則會使用系統指派的身分識別。 不應該設定 credential 時,這個屬性會以不同的方式用於本機開發案例。 |
No | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice |
注意
在本機、Azure 應用程式組態 或 金鑰保存庫 使用local.settings.json
檔案來提供身分識別型連線的設定時,請將 取代__
:
為 設定名稱中的 ,以確保正確解析名稱。
例如: AzureSignalRConnectionString:serviceUri
。
多個端點設定
您也可以設定多個端點,併為每個端點指定身分識別設定。
在這裡情況下,請在您的設定前面加上 Azure__SignalR__Endpoints__{endpointName}
。 {endpointName}
是由您指派的任意名稱,可將一組設定關聯至服務端點。 屬性無法自定義connectionStringSetting
前置Azure__SignalR__Endpoints__{endpointName}
詞。
屬性 | 環境變數範本 | 描述 | 必要 | 範例值 |
---|---|---|---|---|
服務 URI | Azure__SignalR__Endpoints__{endpointName}__serviceUri |
服務端點的 URI。 當您只設定「服務 URI」時,擴充功能會嘗試使用 DefaultAzureCredential 類型向服務進行驗證。 | Yes | https://mysignalrsevice1.service.signalr.net |
端點類型 | Azure__SignalR__Endpoints__{endpointName}__type |
指出服務端點是主要或次要。 如果未指定,則預設為 Primary 。 有效值為 Primary 和 Secondary ,不區分大小寫。 |
No | Secondary |
權杖認證 | Azure__SignalR__Endpoints__{endpointName}__credential |
定義如何為連線取得權杖。 如果您已部署的 Azure 函式想要使用受控識別驗證,則此設定應設定為 managedidentity 。 僅在裝載環境中有受控識別可用時,這個值才有效。 |
No | managedidentity |
Client ID | Azure__SignalR__Endpoints__{endpointName}__clientId |
當 credential 設定為 managedidentity 時,可將這個屬性設定為指定在取得權杖時要使用的使用者指派身分識別。 屬性接受的用戶端識別碼,對應至指派給應用程式的使用者指派身分識別。 指定資源識別碼和用戶端識別碼無效。 如果沒有指定,則會使用系統指派的身分識別。 不應該設定 credential 時,這個屬性會以不同的方式用於本機開發案例。 |
No | 00000000-0000-0000-0000-000000000000 |
資源識別碼 | Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId |
當 credential 設定為 managedidentity 時,可將這個屬性設定為指定在取得權杖時所要使用的資源身分識別。 屬性會接受的資源識別碼是對應至使用者定義受控識別的資源識別碼。 指定資源識別碼和用戶端識別碼無效。 如果未指定這兩個身分識別,則會使用系統指派的身分識別。 不應該設定 credential 時,這個屬性會以不同的方式用於本機開發案例。 |
No | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/rmg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity |
如需多個端點的詳細資訊,請參閱 使用多個實例調整 SignalR Service
下一步
如需如何設定和使用 SignalR 服務和 Azure Functions 的詳細資訊,請參閱 使用 Azure SignalR Service 進行 Azure Functions 開發和設定。