1

我在 Azure 中设置了 SignalR 服务帐户。

我已将其设置为无服务器。

我已将上游 URL 设置为https://THE-NAME-OF-MY-FUNC-APP.azurewebsites.net/runtime/webhooks/signalr?code=THE-DEFAULT-KEY-FROM-FUNC-APP-APPKEYS_HOST_DEFAULT

这记录在此处,在规则设置下:https ://docs.microsoft.com/en-us/azure/azure-signalr/concept-upstream#rule-settings

我在 Node/TypeScript 中创建了一个 AZ Functions 应用程序,其中我有一个具有 SignalRTrigger 输入和 SignalRMessages 输出的函数。考虑以下函数。

函数.js

{
  "bindings": [
    {
      "type": "signalRTrigger",
      "name": "invocation",
      "hubName": "mailbox",
      "category": "messages",
      "event": "heartbeat",
      "connectionStringSetting": "AzureSignalRConnectionString",
      "parameterNames":[
        "mailboxId"
      ],
      "direction": "in"      
    },
    {
      "type": "signalR",
      "name": "signalRMessages",
      "hubName": "mailbox",
      "connectionStringSetting": "AzureSignalRConnectionString",
      "direction": "out"
    }
  ],
  "scriptFile": "../dist/heartbeat/index.js"
}

和 index.js

import { AzureFunction, Context } from "@azure/functions"

const heartbeatTrigger: AzureFunction = async function (context: Context, invocation: any): Promise<void> {
    context.log.info('Heartbeat function executed');
    let mbid = context.bindingData.mailboxId;

    // output a hearbeat received
    context.bindings.signalRMessages = [{
        "target": "heartbeatReceived",
        "arguments": [mbid]
    }];

};

export default heartbeatTrigger;

当我在 Vue 应用程序中使用 @aspnet/signalr 客户端时,我可以连接到 SignalR 集线器。

当我尝试使用时,myConnection.send('heartbeat', '123')我希望上述函数被调用。

这没有发生。我似乎无法触发该功能。

有人可以帮忙吗?

4

1 回答 1

1

我在这上面花了几天时间。

终于在 GitHub 上看到了这个文档

https://github.com/Azure/azure-functions-signalrservice-extension/tree/master/samples/bidirectional-chat

这解释了如何让它全部工作——大块是需要使用的关键。Signalr_extension!

于 2020-11-12T18:42:40.100 回答