SignalR 服务(无服务器)-Azure Functions

bla*_*ord 5 c# signalr azure-functions serverless

我对 SignalR 感到困惑,特别是在使用 Azure SignalR 服务时,在考虑使用 Azure Functions 的无服务器实现时更是如此。

我有一个 Web 应用程序和一个 Azure Function 应用程序,其中实现了协商功能。客户端上的 JavaScript 已成功协商并能够连接到 Azure SignalR 服务,到目前为止一切顺利。

附带问题:CORS 设置是阻止任何老人连接并获取令牌的唯一因素吗?这本身足够安全吗?

之后这就是我感到困惑的地方。我现在有一个 Azure SignalR 服务和一个 Azure Function 应用程序,在建立与 Azure SignalR 服务的客户端连接后,Function 应用程序有什么用处?

在客户端交互方面,我需要做一些事情,例如加入一个组并向该组广播(从客户端上的 JavaScript),我假设这些将是函数应用程序上的两个附加函数(Http 触发器)?

假设我对上述内容是正确的,如何阻止任何人通过函数应用程序 http 端点调用“广播”函数?至少在本地,我可以从邮递员调用它,而无需提供在初始协商响应中收到的任何信息。

我还需要从后端代码(.net 标准)将消息推送到组,这是通过调用函数应用程序还是直接调用 Azure SignalR 服务来完成的?

提前致谢。

Ale*_*hul 1

这是一个很好的问题!
当我开始倾向于完全无服务器的方法时,我也想知道同样的事情。

唯一阻止任何老人连接并获取令牌的是 CORS 设置吗?这本身足够安全吗?

当你开始时,看起来确实是这样,但答案是否定的。
您可以验证您的功能。可以使用内置的提供程序,也可以通过创建自己的自定义绑定来检查通过标头传递的令牌来对自己进行身份验证。

在客户端交互方面,我需要做一些事情,例如加入一个组并向该组广播(从客户端上的 JavaScript),我假设这些将是函数应用程序上的两个附加函数(Http 触发器)?

你的假设是正确的。如果您想完全实现无服务器,这就是正确的选择。您可以像验证 SignalR 协商功能一样验证这些功能,并且您将拥有一个安全端点,它将为您调用 SignalR 服务。

我还需要从后端代码(.net 标准)将消息推送到组,这是通过调用函数应用程序还是直接调用 Azure SignalR 服务来完成的?

这个问题没有正确答案。这实际上取决于您的具体架构。如果没有更多背景,尝试回答这个问题将是困难/错误的。

哦,如果您要使用 SignalR 实现无服务器,我真的希望您正在利用它们的绑定。:)