【问题标题】:Azure function is not sending data to Azure signlRAzure 函数未向 Azure signalR 发送数据
【发布时间】:2020-02-27 03:06:39
【问题描述】:

我有 Timer 触发 Azure 函数,它调用 API 并将输出数据发送到 signalR。此外,我已经在应用程序设置中设置了 AzureSignalRConnectionString。但问题是 Azure SignalR 没有在连接指标中显示任何活动

Azure 函数:

const fetch = require('node-fetch');

module.exports = async function (context) {

    let response = await fetch('<ENDPOINT>');
    let data = await response.json();

    context.bindings.signalRMessages = [{
        "target": "latestData",
        "arguments": [data]
    }];
    context.log('Done');
};

function.json

{
  "bindings": [

  {
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in",
    "schedule": "*/5 * * * * *"
  },
  {
    "type": "signalR",
    "name": "signalRMessages",
    "hubName": "health",
    "direction": "out"
  }

  ]
}

【问题讨论】:

    标签: javascript azure signalr azure-functions serverless-framework


    【解决方案1】:

    根据官方文档,信号器连接字符串需要在绑定模式上:

    {
      "type": "signalR",
      "name": "signalRMessages", // name of the output binding
      "hubName": "<hub_name>",
      "connectionStringSetting": "<setting_name>", // Defaults to AzureSignalRConnectionString
      "direction": "out"
    }
    

    https://github.com/Azure/azure-functions-signalrservice-extension

    使用以下 AZ CLI 命令定义 SignalR 设置:

    #========================================================================
    #=== Update these variables for your resources.                       ===
    #========================================================================
    ResourceGroupName=SignalRTestResources
    SignalRServiceResource=mySignalRresourcename
    WebAppName=myWebAppName
    
    # Get the SignalR primary connection string 
    primaryConnectionString=$(az signalr key list --name $SignalRServiceResource \
      --resource-group $ResourceGroupName --query primaryConnectionString -o tsv)
    
    #Add an app setting to the web app for the SignalR connection
    az webapp config appsettings set --name $WebAppName \
        --resource-group $ResourceGroupName \
        --settings "Azure__SignalR__ConnectionString=$primaryConnectionString"
    

    https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-concept-authenticate-oauth

    【讨论】:

    • 我已经尝试过了,但它给出了错误——“无法解析属性 'SignalRAttribute.ConnectionStringSetting' 的值。确保设置存在并且具有有效值。”我还从 SignalR 复制了相同的连接字符串 ("Endpoint=https://.service.signalr.net;AccessKey=;Version=1.0;"),但它仍然给出错误..
    • 您应该将“AzureSignalRConnectionString”作为值。然后在应用程序设置中,使用此名称创建一个设置,值将是信号器连接字符串:Endpoint=;AccessKey=;
    • 我按照你的建议提供了输入,但没有运气.... "ConnectionStringSetting" : "AzureSignalRConnectionString"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多