Azure İşlevleri için SignalR Service bağlamalarıSignalR Service bindings for Azure Functions

Bu makalede, Azure Işlevleri 'nde SignalR hizmeti bağlamaları kullanılarak Azure SignalR hizmetine bağlı istemcilere nasıl kimlik doğrulaması yapılacağını ve gerçek zamanlı iletilerin gönderilmesi açıklanmaktadır.This article explains how to authenticate and send real-time messages to clients connected to Azure SignalR Service by using SignalR Service bindings in Azure Functions. Azure Işlevleri, SignalR hizmeti için giriş ve çıkış bağlamalarını destekler.Azure Functions supports input and output bindings for SignalR Service.

Azure işlevleri geliştiricileri için başvuru bilgileri budur.This is reference information for Azure Functions developers. Azure işlevleri'ne yeni başladıysanız, aşağıdaki kaynaklarla başlayın:If you're new to Azure Functions, start with the following resources:

Paketler - 2.x işlevleriPackages - Functions 2.x

SignalR hizmeti bağlamaları Microsoft. Azure. WebJobs. Extensions. SignalRService NuGet paketi, sürüm 1. * içinde verilmiştir.The SignalR Service bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SignalRService NuGet package, version 1.*. Paketin kaynak kodu, Azure-Functions-signalrservice-Extension GitHub deposunda bulunur.Source code for the package is in the azure-functions-signalrservice-extension GitHub repository.

Aşağıdaki tabloda, bu bağlama için destek her geliştirme ortamında nasıl ekleyeceğiniz anlatılmaktadır.The following table tells how to add support for this binding in each development environment.

Geliştirme ortamıDevelopment environment Desteği eklemek içinTo add support in
İşlevler 2.xFunctions 2.x
Yerel geliştirme - C# sınıf kitaplığıLocal development - C# class library Paketi yükleyinInstall the package
Yerel geliştirme - C# komut dosyası, JavaScriptF#Local development - C# script, JavaScript, F# Uzantı kaydetmeRegister the extension
Portal geliştirmePortal development Uzantı kaydetmeRegister the extension

İşlev uygulaması projenizi yeniden yayımlamak zorunda kalmadan portalında uzantılarının bağlama var olan güncelleştirme hakkında bilgi edinmek için bkz: uzantılarınızı güncelleştirmek.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

Java ek açıklamalarıJava annotations

Java işlevlerinde SignalR hizmeti ek açıklamalarını kullanmak için, POM. xml dosyanıza Azure-Functions-Java-Library-SignalR yapıtı (sürüm 1,0 veya üzeri) bir bağımlılık eklemeniz gerekir.To use the SignalR Service annotations in Java functions, you need to add a dependency to the azure-functions-java-library-signalr artifact (version 1.0 or higher) to your pom.xml.

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-signalr</artifactId>
    <version>1.0.0</version>
</dependency>

Not

Java 'da SignalR hizmeti bağlamalarını kullanmak için Azure Functions Core Tools (ana bilgisayar sürümü 2.0.12332) sürüm 2.4.419 veya üstünü kullandığınızdan emin olun.To use the SignalR Service bindings in Java, make sure you are using version 2.4.419 or higher of the Azure Functions Core Tools (host version 2.0.12332).

Azure Işlevleri ile SignalR hizmetini kullanmaUsing SignalR Service with Azure Functions

SignalR hizmetini ve Azure Işlevlerini birlikte yapılandırma ve kullanma hakkında ayrıntılı bilgi için Azure SignalR hizmeti Ile Azure işlevleri geliştirme ve yapılandırmakonusuna bakın.For details on how to configure and use SignalR Service and Azure Functions together, refer to Azure Functions development and configuration with Azure SignalR Service.

SignalR bağlantı bilgileri giriş bağlamaSignalR connection info input binding

Bir istemcinin Azure SignalR hizmetine bağlanabilmesi için, hizmet uç noktası URL 'sini ve geçerli bir erişim belirtecini alması gerekir.Before a client can connect to Azure SignalR Service, it must retrieve the service endpoint URL and a valid access token. Signalrconnectionınfo giriş bağlaması, SignalR hizmeti uç noktası URL 'sini ve hizmete bağlanmak için kullanılan geçerli bir belirteci üretir.The SignalRConnectionInfo input binding produces the SignalR Service endpoint URL and a valid token that are used to connect to the service. Belirteç zaman sınırlı olduğundan ve belirli bir kullanıcının kimlik doğrulaması için kullanılabilir olduğundan, belirteci önbelleğe almalısınız veya istemciler arasında paylaşamazsınız.Because the token is time-limited and can be used to authenticate a specific user to a connection, you should not cache the token or share it between clients. Bu bağlamayı kullanan bir HTTP tetikleyicisi, istemciler tarafından bağlantı bilgilerini almak için kullanılabilir.An HTTP trigger using this binding can be used by clients to retrieve the connection information.

Dile özgü örneğe bakın:See the language-specific example:

Bu bağlamanın bir SignalR istemci SDK 'Sı tarafından tüketilen bir "Negotiate" işlevi oluşturmak için nasıl kullanıldığı hakkında daha fazla bilgi için, SignalR hizmeti kavramları belgelerindeki Azure işlevleri geliştirme ve yapılandırma makalesine bakın.For more information on how this binding is used to create a "negotiate" function that can be consumed by a SignalR client SDK, see the Azure Functions development and configuration article in the SignalR Service concepts documentation.

2. x C# giriş örnekleri2.x C# input examples

Aşağıdaki örnek, giriş bağlamasını kullanarak SignalR bağlantı bilgilerini alan ve http üzerinden döndüren bir C# işlevi gösterir.The following example shows a C# function that acquires SignalR connection information using the input binding and returns it over HTTP.

[FunctionName("negotiate")]
public static SignalRConnectionInfo Negotiate(
    [HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequest req,
    [SignalRConnectionInfo(HubName = "chat")]SignalRConnectionInfo connectionInfo)
{
    return connectionInfo;
}

Kimliği doğrulanmış belirteçlerAuthenticated tokens

İşlev kimliği doğrulanmış bir istemci tarafından tetikleniyorsa, oluşturulan belirtece bir kullanıcı KIMLIĞI talebi ekleyebilirsiniz.If the function is triggered by an authenticated client, you can add a user ID claim to the generated token. App Service kimlik doğrulamasıkullanarak bir işlev uygulamasına kolayca kimlik doğrulaması ekleyebilirsiniz.You can easily add authentication to a function app using App Service Authentication.

App Service kimlik doğrulaması, sırasıyla kimliği x-ms-client-principal-id doğrulanmış x-ms-client-principal-name kullanıcının istemci asıl kimliğini ve adını içeren ve adlı HTTP üstbilgilerini ayarlar.App Service Authentication sets HTTP headers named x-ms-client-principal-id and x-ms-client-principal-name that contain the authenticated user's client principal ID and name, respectively. Bağlama ifadesini kullanarak, UserId bağlama ifadesiile herhangi bir başlıktaki değere bağlamayı ayarlayabilirsiniz: {headers.x-ms-client-principal-id} veya. {headers.x-ms-client-principal-name}You can set the UserId property of the binding to the value from either header using a binding expression: {headers.x-ms-client-principal-id} or {headers.x-ms-client-principal-name}.

[FunctionName("negotiate")]
public static SignalRConnectionInfo Negotiate(
    [HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequest req, 
    [SignalRConnectionInfo
        (HubName = "chat", UserId = "{headers.x-ms-client-principal-id}")]
        SignalRConnectionInfo connectionInfo)
{
    // connectionInfo contains an access key token with a name identifier claim set to the authenticated user
    return connectionInfo;
}

2. x JavaScript girişi örnekleri2.x JavaScript input examples

Aşağıdaki örnek, bir function. JSON dosyasındaki bir SignalR bağlantı bilgileri giriş bağlamasını ve bağlantı bilgilerini döndürmek için bağlamayı kullanan bir JavaScript işlevini gösterir.The following example shows a SignalR connection info input binding in a function.json file and a JavaScript function that uses the binding to return the connection information.

İşte, function. JSON dosyasındaki veri bağlama:Here's binding data in the function.json file:

Örnek Function. JSON:Example function.json:

{
    "type": "signalRConnectionInfo",
    "name": "connectionInfo",
    "hubName": "chat",
    "connectionStringSetting": "<name of setting containing SignalR Service connection string>",
    "direction": "in"
}

JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = async function (context, req, connectionInfo) {
    context.res.body = connectionInfo;
};

Kimliği doğrulanmış belirteçlerAuthenticated tokens

İşlev kimliği doğrulanmış bir istemci tarafından tetikleniyorsa, oluşturulan belirtece bir kullanıcı KIMLIĞI talebi ekleyebilirsiniz.If the function is triggered by an authenticated client, you can add a user ID claim to the generated token. App Service kimlik doğrulamasıkullanarak bir işlev uygulamasına kolayca kimlik doğrulaması ekleyebilirsiniz.You can easily add authentication to a function app using App Service Authentication.

App Service kimlik doğrulaması, sırasıyla kimliği x-ms-client-principal-id doğrulanmış x-ms-client-principal-name kullanıcının istemci asıl kimliğini ve adını içeren ve adlı HTTP üstbilgilerini ayarlar.App Service Authentication sets HTTP headers named x-ms-client-principal-id and x-ms-client-principal-name that contain the authenticated user's client principal ID and name, respectively. Bağlama ifadesini kullanarak, userId bağlama ifadesiile herhangi bir başlıktaki değere bağlamayı ayarlayabilirsiniz: {headers.x-ms-client-principal-id} veya. {headers.x-ms-client-principal-name}You can set the userId property of the binding to the value from either header using a binding expression: {headers.x-ms-client-principal-id} or {headers.x-ms-client-principal-name}.

Örnek Function. JSON:Example function.json:

{
    "type": "signalRConnectionInfo",
    "name": "connectionInfo",
    "hubName": "chat",
    "userId": "{headers.x-ms-client-principal-id}",
    "connectionStringSetting": "<name of setting containing SignalR Service connection string>",
    "direction": "in"
}

JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = async function (context, req, connectionInfo) {
    // connectionInfo contains an access key token with a name identifier
    // claim set to the authenticated user
    context.res.body = connectionInfo;
};

2. x Java giriş örnekleri2.x Java input examples

Aşağıdaki örnek, giriş bağlamayı kullanarak SignalR bağlantı bilgilerini alan ve HTTP üzerinden döndüren bir Java işlevini gösterir.The following example shows a Java function that acquires SignalR connection information using the input binding and returns it over HTTP.

@FunctionName("negotiate")
public SignalRConnectionInfo negotiate(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req,
        @SignalRConnectionInfoInput(
            name = "connectionInfo",
            hubName = "chat") SignalRConnectionInfo connectionInfo) {
    return connectionInfo;
}

Kimliği doğrulanmış belirteçlerAuthenticated tokens

İşlev kimliği doğrulanmış bir istemci tarafından tetikleniyorsa, oluşturulan belirtece bir kullanıcı KIMLIĞI talebi ekleyebilirsiniz.If the function is triggered by an authenticated client, you can add a user ID claim to the generated token. App Service kimlik doğrulamasıkullanarak bir işlev uygulamasına kolayca kimlik doğrulaması ekleyebilirsiniz.You can easily add authentication to a function app using App Service Authentication.

App Service kimlik doğrulaması, sırasıyla kimliği x-ms-client-principal-id doğrulanmış x-ms-client-principal-name kullanıcının istemci asıl kimliğini ve adını içeren ve adlı HTTP üstbilgilerini ayarlar.App Service Authentication sets HTTP headers named x-ms-client-principal-id and x-ms-client-principal-name that contain the authenticated user's client principal ID and name, respectively. Bağlama ifadesini kullanarak, UserId bağlama ifadesiile herhangi bir başlıktaki değere bağlamayı ayarlayabilirsiniz: {headers.x-ms-client-principal-id} veya. {headers.x-ms-client-principal-name}You can set the UserId property of the binding to the value from either header using a binding expression: {headers.x-ms-client-principal-id} or {headers.x-ms-client-principal-name}.

@FunctionName("negotiate")
public SignalRConnectionInfo negotiate(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req,
        @SignalRConnectionInfoInput(
            name = "connectionInfo",
            hubName = "chat",
            userId = "{headers.x-ms-client-principal-id}") SignalRConnectionInfo connectionInfo) {
    return connectionInfo;
}

SignalR çıkış bağlamaSignalR output binding

Azure SignalR hizmetini kullanarak bir veya daha fazla ileti göndermek için SignalR çıkış bağlamasını kullanın.Use the SignalR output binding to send one or more messages using Azure SignalR Service. Tüm bağlı istemcilere bir ileti yayınlayabilirsiniz veya yalnızca belirli bir kullanıcıya kimliği doğrulanmış bağlı istemcilere yayınlayabilirsiniz.You can broadcast a message to all connected clients, or you can broadcast it only to connected clients that have been authenticated to a given user.

Ayrıca, bir kullanıcının ait olduğu grupları yönetmek için de kullanabilirsiniz.You can also use it to manage the groups that a user belongs to.

Dile özgü örneğe bakın:See the language-specific example:

2. x C# ileti gönderme çıkışı örnekleri2.x C# send message output examples

Tüm istemcilere yayınlaBroadcast to all clients

Aşağıdaki örnek, tüm bağlı istemcilere çıkış bağlamayı kullanarak bir ileti gönderen bir C# işlevi gösterir.The following example shows a C# function that sends a message using the output binding to all connected clients. , Target Her istemcide çağrılacak yöntemin adıdır.The Target is the name of the method to be invoked on each client. Arguments Özelliği, istemci metoduna geçirilecek sıfır veya daha fazla nesne dizisidir.The Arguments property is an array of zero or more objects to be passed to the client method.

[FunctionName("SendMessage")]
public static Task SendMessage(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
    [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
    return signalRMessages.AddAsync(
        new SignalRMessage 
        {
            Target = "newMessage", 
            Arguments = new [] { message } 
        });
}

Kullanıcıya gönderSend to a user

SignalR iletisinin UserId özelliğini ayarlayarak yalnızca bir kullanıcıya kimliği doğrulanmış bağlantılara ileti gönderebilirsiniz.You can send a message only to connections that have been authenticated to a user by setting the UserId property of the SignalR message.

[FunctionName("SendMessage")]
public static Task SendMessage(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
    [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
    return signalRMessages.AddAsync(
        new SignalRMessage 
        {
            // the message will only be sent to this user ID
            UserId = "userId1",
            Target = "newMessage",
            Arguments = new [] { message }
        });
}

Bir gruba gönderSend to a group

SignalR iletisinin GroupName özelliğini ayarlayarak yalnızca bir gruba eklenmiş bağlantılara bir ileti gönderebilirsiniz.You can send a message only to connections that have been added to a group by setting the GroupName property of the SignalR message.

[FunctionName("SendMessage")]
public static Task SendMessage(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
    [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
    return signalRMessages.AddAsync(
        new SignalRMessage
        {
            // the message will be sent to the group with this name
            GroupName = "myGroup",
            Target = "newMessage",
            Arguments = new [] { message }
        });
}

2. x C# Grup yönetimi çıkış örnekleri2.x C# group management output examples

SignalR hizmeti kullanıcıların gruplara eklenmesine izin verir.SignalR Service allows users to be added to groups. İletiler daha sonra bir gruba gönderilebilir.Messages can then be sent to a group. Bir kullanıcının grup üyeliğini SignalRGroupAction yönetmek için SignalR çıkış bağlaması ile sınıfını kullanabilirsiniz.You can use the SignalRGroupAction class with the SignalR output binding to manage a user's group membership.

Gruba kullanıcı eklemeAdd user to a group

Aşağıdaki örnek bir gruba bir kullanıcı ekler.The following example adds a user to a group.

[FunctionName("addToGroup")]
public static Task AddToGroup(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest req,
    ClaimsPrincipal claimsPrincipal,
    [SignalR(HubName = "chat")]
        IAsyncCollector<SignalRGroupAction> signalRGroupActions)
{
    var userIdClaim = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier);
    return signalRGroupActions.AddAsync(
        new SignalRGroupAction
        {
            UserId = userIdClaim.Value,
            GroupName = "myGroup",
            Action = GroupAction.Add
        });
}

Kullanıcıyı bir gruptan KaldırRemove user from a group

Aşağıdaki örnek bir kullanıcıyı bir gruptan kaldırır.The following example removes a user from a group.

[FunctionName("removeFromGroup")]
public static Task RemoveFromGroup(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest req,
    ClaimsPrincipal claimsPrincipal,
    [SignalR(HubName = "chat")]
        IAsyncCollector<SignalRGroupAction> signalRGroupActions)
{
    var userIdClaim = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier);
    return signalRGroupActions.AddAsync(
        new SignalRGroupAction
        {
            UserId = userIdClaim.Value,
            GroupName = "myGroup",
            Action = GroupAction.Remove
        });
}

Not

ClaimsPrincipal Doğru bir şekilde bağlanmasını sağlamak için Azure işlevleri 'nde kimlik doğrulama ayarlarını yapılandırmış olmanız gerekir.In order to get the ClaimsPrincipal correctly bound, you must have configured the authentication settings in Azure Functions.

2. x JavaScript ileti çıkış örnekleri gönder2.x JavaScript send message output examples

Tüm istemcilere yayınlaBroadcast to all clients

Aşağıdaki örnek, bir function. JSON dosyasındaki bir SignalR çıkış bağlamasını ve Azure SignalR hizmeti ile ileti göndermek için bağlamayı kullanan bir JavaScript işlevini gösterir.The following example shows a SignalR output binding in a function.json file and a JavaScript function that uses the binding to send a message with Azure SignalR Service. Çıkış bağlamayı bir veya daha fazla SignalR iletisi dizisine ayarlayın.Set the output binding to an array of one or more SignalR messages. Bir SignalR iletisi, her istemcide target çağrılacak yöntemin adını arguments ve istemci metoduna bağımsız değişken olarak geçirilecek nesne dizisi olan bir özelliği içerir.A SignalR message consists of a target property that specifies the name of the method to invoke on each client, and an arguments property that is an array of objects to pass to the client method as arguments.

İşte, function. JSON dosyasındaki veri bağlama:Here's binding data in the function.json file:

Örnek Function. JSON:Example function.json:

{
  "type": "signalR",
  "name": "signalRMessages",
  "hubName": "<hub_name>",
  "connectionStringSetting": "<name of setting containing SignalR Service connection string>",
  "direction": "out"
}

JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = async function (context, req) {
    context.bindings.signalRMessages = [{
        "target": "newMessage",
        "arguments": [ req.body ]
    }];
};

Kullanıcıya gönderSend to a user

SignalR iletisinin userId özelliğini ayarlayarak yalnızca bir kullanıcıya kimliği doğrulanmış bağlantılara ileti gönderebilirsiniz.You can send a message only to connections that have been authenticated to a user by setting the userId property of the SignalR message.

function. JSON aynı kalır.function.json stays the same. JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = async function (context, req) {
    context.bindings.signalRMessages = [{
        // message will only be sent to this user ID
        "userId": "userId1",
        "target": "newMessage",
        "arguments": [ req.body ]
    }];
};

Bir gruba gönderSend to a group

SignalR iletisinin groupName özelliğini ayarlayarak yalnızca bir gruba eklenmiş bağlantılara bir ileti gönderebilirsiniz.You can send a message only to connections that have been added to a group by setting the groupName property of the SignalR message.

function. JSON aynı kalır.function.json stays the same. JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = async function (context, req) {
    context.bindings.signalRMessages = [{
        // message will only be sent to this group
        "groupName": "myGroup",
        "target": "newMessage",
        "arguments": [ req.body ]
    }];
};

2. x JavaScript Grup yönetimi çıkış örnekleri2.x JavaScript group management output examples

SignalR hizmeti kullanıcıların gruplara eklenmesine izin verir.SignalR Service allows users to be added to groups. İletiler daha sonra bir gruba gönderilebilir.Messages can then be sent to a group. Bir kullanıcının grup üyeliğini SignalR yönetmek için çıkış bağlamayı kullanabilirsiniz.You can use the SignalR output binding to manage a user's group membership.

Gruba kullanıcı eklemeAdd user to a group

Aşağıdaki örnek bir gruba bir kullanıcı ekler.The following example adds a user to a group.

function. JSONfunction.json

{
  "disabled": false,
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "type": "signalR",
      "name": "signalRGroupActions",
      "connectionStringSetting": "<name of setting containing SignalR Service connection string>",
      "hubName": "chat",
      "direction": "out"
    }
  ]
}

index. jsindex.js

module.exports = async function (context, req) {
  context.bindings.signalRGroupActions = [{
    "userId": req.query.userId,
    "groupName": "myGroup",
    "action": "add"
  }];
};

Kullanıcıyı bir gruptan KaldırRemove user from a group

Aşağıdaki örnek bir kullanıcıyı bir gruptan kaldırır.The following example removes a user from a group.

function. JSONfunction.json

{
  "disabled": false,
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "type": "signalR",
      "name": "signalRGroupActions",
      "connectionStringSetting": "<name of setting containing SignalR Service connection string>",
      "hubName": "chat",
      "direction": "out"
    }
  ]
}

index. jsindex.js

module.exports = async function (context, req) {
  context.bindings.signalRGroupActions = [{
    "userId": req.query.userId,
    "groupName": "myGroup",
    "action": "remove"
  }];
};

2. x Java ileti gönderme çıkışı örnekleri2.x Java send message output examples

Tüm istemcilere yayınlaBroadcast to all clients

Aşağıdaki örnekte, tüm bağlı istemcilere çıkış bağlamayı kullanarak bir ileti gönderen bir Java işlevi gösterilmektedir.The following example shows a Java function that sends a message using the output binding to all connected clients. , target Her istemcide çağrılacak yöntemin adıdır.The target is the name of the method to be invoked on each client. arguments Özelliği, istemci metoduna geçirilecek sıfır veya daha fazla nesne dizisidir.The arguments property is an array of zero or more objects to be passed to the client method.

@FunctionName("sendMessage")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRMessage sendMessage(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Object> req) {

    SignalRMessage message = new SignalRMessage();
    message.target = "newMessage";
    message.arguments.add(req.getBody());
    return message;
}

Kullanıcıya gönderSend to a user

SignalR iletisinin userId özelliğini ayarlayarak yalnızca bir kullanıcıya kimliği doğrulanmış bağlantılara ileti gönderebilirsiniz.You can send a message only to connections that have been authenticated to a user by setting the userId property of the SignalR message.

@FunctionName("sendMessage")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRMessage sendMessage(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Object> req) {

    SignalRMessage message = new SignalRMessage();
    message.userId = "userId1";
    message.target = "newMessage";
    message.arguments.add(req.getBody());
    return message;
}

Bir gruba gönderSend to a group

SignalR iletisinin groupName özelliğini ayarlayarak yalnızca bir gruba eklenmiş bağlantılara bir ileti gönderebilirsiniz.You can send a message only to connections that have been added to a group by setting the groupName property of the SignalR message.

@FunctionName("sendMessage")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRMessage sendMessage(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Object> req) {

    SignalRMessage message = new SignalRMessage();
    message.groupName = "myGroup";
    message.target = "newMessage";
    message.arguments.add(req.getBody());
    return message;
}

2. x Java Grup yönetimi çıkış örnekleri2.x Java group management output examples

SignalR hizmeti kullanıcıların gruplara eklenmesine izin verir.SignalR Service allows users to be added to groups. İletiler daha sonra bir gruba gönderilebilir.Messages can then be sent to a group. Bir kullanıcının grup üyeliğini SignalRGroupAction yönetmek için SignalROutput çıkış bağlaması ile sınıfını kullanabilirsiniz.You can use the SignalRGroupAction class with the SignalROutput output binding to manage a user's group membership.

Gruba kullanıcı eklemeAdd user to a group

Aşağıdaki örnek bir gruba bir kullanıcı ekler.The following example adds a user to a group.

@FunctionName("addToGroup")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRGroupAction addToGroup(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Object> req,
        @BindingName("userId") String userId) {

    SignalRGroupAction groupAction = new SignalRGroupAction();
    groupAction.action = "add";
    groupAction.userId = userId;
    groupAction.groupName = "myGroup";
    return action;
}

Kullanıcıyı bir gruptan KaldırRemove user from a group

Aşağıdaki örnek bir kullanıcıyı bir gruptan kaldırır.The following example removes a user from a group.

@FunctionName("removeFromGroup")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRGroupAction removeFromGroup(
        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.POST },
            authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Object> req,
        @BindingName("userId") String userId) {

    SignalRGroupAction groupAction = new SignalRGroupAction();
    groupAction.action = "remove";
    groupAction.userId = userId;
    groupAction.groupName = "myGroup";
    return action;
}

YapılandırmaConfiguration

SignalrconnectionınfoSignalRConnectionInfo

Aşağıdaki tabloda ayarladığınız bağlama yapılandırma özelliklerini açıklayan function.json dosya ve SignalRConnectionInfo özniteliği.The following table explains the binding configuration properties that you set in the function.json file and the SignalRConnectionInfo attribute.

Function.JSON özelliğifunction.json property Öznitelik özelliğiAttribute property AçıklamaDescription
typetype Ayarlanmalıdır signalRConnectionInfo.Must be set to signalRConnectionInfo.
directiondirection Ayarlanmalıdır in.Must be set to in.
namename Bağlantı bilgisi nesnesi için işlev kodunda kullanılan değişken adı.Variable name used in function code for connection info object.
hubNamehubName HubNameHubName Bu değer, bağlantı bilgilerinin oluşturulduğu SignalR hub 'ının adına ayarlanmalıdır.This value must be set to the name of the SignalR hub for which the connection information is generated.
userIduserId UserIDUserId İsteğe bağlı: Erişim anahtarı belirtecinde ayarlanacak Kullanıcı tanımlayıcı talebinin değeri.Optional: The value of the user identifier claim to be set in the access key token.
connectionStringSettingconnectionStringSetting connectionStringSettingConnectionStringSetting SignalR hizmeti bağlantı dizesini içeren uygulama ayarının adı (varsayılan olarak "AzureSignalRConnectionString" olarak belirlenmiştir)The name of the app setting that contains the SignalR Service connection string (defaults to "AzureSignalRConnectionString")

SignalRSignalR

Aşağıdaki tabloda ayarladığınız bağlama yapılandırma özelliklerini açıklayan function.json dosya ve SignalR özniteliği.The following table explains the binding configuration properties that you set in the function.json file and the SignalR attribute.

Function.JSON özelliğifunction.json property Öznitelik özelliğiAttribute property AçıklamaDescription
typetype Ayarlanmalıdır signalR.Must be set to signalR.
directiondirection Ayarlanmalıdır out.Must be set to out.
namename Bağlantı bilgisi nesnesi için işlev kodunda kullanılan değişken adı.Variable name used in function code for connection info object.
hubNamehubName HubNameHubName Bu değer, bağlantı bilgilerinin oluşturulduğu SignalR hub 'ının adına ayarlanmalıdır.This value must be set to the name of the SignalR hub for which the connection information is generated.
connectionStringSettingconnectionStringSetting connectionStringSettingConnectionStringSetting SignalR hizmeti bağlantı dizesini içeren uygulama ayarının adı (varsayılan olarak "AzureSignalRConnectionString" olarak belirlenmiştir)The name of the app setting that contains the SignalR Service connection string (defaults to "AzureSignalRConnectionString")

Uygulama ayarları yerel olarak geliştirirken tarihinden local.settings.json dosyasında.When you're developing locally, app settings go into the local.settings.json file.

Sonraki adımlarNext steps