问题标签 [azure-signalr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
386 浏览

azure - SignalR 和 Azure 函数与 AuthorizationLevel.Function

尝试使用功能键(AuthorizationLevel.Function)保护我的天蓝色功能

我的天蓝色函数使用signalR。如果我在协商和其他 signalR 入口点上使用 AuthorizationLevel.Function,当 javascript 代码连接到 signalR: 函数时,如何传递函数键:

网站:

似乎 HubConnectionBuilder 可以在 c# 中访问标头,但不能在 javascript 中访问。

我已阅读将标头添加到@aspnet/signalr Javascript 客户端 ,但第一个建议将密钥附加到 url,并且在连接时会将 /negotiate 附加到它,从而导致带有 https://host/&code=/negotiate 的 URL 无效。

如果不可能,建议有什么替代方法来保护我的 signalR 功能?(可能是不记名令牌,如https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1

谢谢

0 投票
0 回答
53 浏览

signalr - 尝试同时连接多个用户时出现signalR websocket错误

我正在使用signalR,带有.Net Core的角度客户端,项目前端和后端都部署到天蓝色。当我打开少量客户端时,它工作正常。但是当同时尝试对许多用户进行加载测试时,websockets 失败了。我在问我是否需要配置一些东西来同时启用大量用户。

0 投票
2 回答
830 浏览

azure - 无法从 Azure 应用服务配置应用程序设置中读取 Azure SignalR 连接字符串

我正在开发一个 Azure SignalR 应用程序,当我在 appsettings.json 中设置以下部分时,我的本地计算机上一切正常:

然后在我的startup.cs中初始化如下:

但是,当我使用 App Service>Configration>ApplicationSettings 在我的 Azure App Service 中创建相同的环境变量时: 在此处输入图像描述

我的应用程序无法启动,并且出现以下应用程序错误:

当我将连接字符串硬核到 AddAzureSignalR() 连接字符串参数并部署时,一切正常。

azuresignalR 似乎无法获取此环境变量,尽管也可以通过 Kudo Appsettings 页面将其视为 Azure:SginalR:ConnectionString。

0 投票
0 回答
134 浏览

graphql - 使用signalR进行订阅的天蓝色函数中的Graphql-net服务器

寻找示例代码,让graphql-net 服务器位于azure 函数端点并进行订阅。Azure 函数不支持 WebSocket,因此考虑使用signalR

根据https://graphql-dotnet.github.io/docs/getting-started/subscriptions/graphql-net确实支持订阅但使用 Appollo graphql 订阅协议。

根据https://github.com/graphql-dotnet/server/issues/289它应该是可行的,但它已经可行了 3 年,我还没有找到更多细节。

谢谢你。

0 投票
2 回答
341 浏览

azure - Azure SignalR 自动缩放

我正在使用 Azure SignalR 服务实例。SignalR 服务目前仅支持每个服务实例每单位 1000 个并发连接。如果并发 SignalR 连接数超过 1000,则必须手动增加服务实例,并随着用户减少而手动减少服务实例。

寻找合适的解决方案来根据需求自动扩展(扩大和缩小)SignalR 服务实例。

如果有任何想法,请分享。谢谢。

0 投票
1 回答
295 浏览

c# - 有没有办法对连接到 Azure SignalR 的用户进行身份验证?

我真的很难理解如何实现这一点。我正在运行 Azure SignalR 服务。我有一个 Azure 函数设置。我有一个 Web API。

Web API 向 Azure 函数触发 HTTP POST,然后使用 HTTPTrigger 向连接到 Azure SignalR 服务的所有用户发送(广播)。伟大的!

现在我有一个问题,对于每个 HTTP POST,Web API 必须只向特定用户发送消息。显然,当用户使用 Azure SignalR 连接(或“协商”)时,他们需要以某种方式进行身份验证。

说实话,当我有一个自托管的 SignalR 应用程序时,我知道如何对用户进行身份验证。每当用户连接到 SignalR 集线器时,先使用不记名令牌身份验证完成此操作。但是,那是自托管的 SignalR。我现在使用托管在 Azure 上的 Azure SignalR。

另外我需要说的是,Azure SignalR 的客户端监听的 Negotatiate 和所有方法都是 Azure Functions。

我想以某种方式将我的不记名令牌身份验证并放置在 Azure SignalR 中。

现在是百万美元的问题……我到底该怎么做呢?我可以重新使用用于自托管 SignalR 服务的承载身份验证代码并以某种方式将其集成到我的架构中吗?

0 投票
1 回答
378 浏览

azure - Azure WebJob 未向 Azure SignalR 服务发送 SignalR 消息

我有一个 Asp.Net Core Api 3.1 和一个 Azure WebJob,它们都在 Azure 应用服务上运行。他们俩都需要发送通知,并且都不会收到消息。分解它:

  • 我在云中有一个 Azure SignalR 服务实例,每个应用程序都指向该实例。

  • 我创建的 Hub 类位于 Api 和 WebJob 项目都引用的库中。

  • 客户端只能通过 Api 连接到 Hub。

  • 当 Api 向连接发送消息时,一切正常,但 WebJob 没有。

真的不想将 WebJob 作为客户端运行,因为那样我就必须处理身份验证。我只是希望它作为同一个集线器的另一个实例运行,它将消息发送到 API 所做的相同组。此外,此 WebJob 不适合作为 Azure 函数运行,因为它需要的时间太长。

我在配置 WebJob 时遗漏了一些东西,因为它似乎没有连接到 Azure SignalR。

当 WebJob 尝试发送消息时,我收到以下错误:(我尚未发布到 Azure,所以这一切都发生在我的本地计算机上)

Microsoft.Azure.SignalR.ServiceLifetimeManager[100] 发送消息失败(空)。Microsoft.Azure.SignalR.Common.AzureSignalRNotConnectedException:尚未连接 Azure SignalR 服务,请稍后重试。在 Microsoft.Azure.SignalR.ServiceConnectionManager 1.WriteAsync(ServiceMessage serviceMessage) at Microsoft.Azure.SignalR.ServiceLifetimeManagerBase1.<>c__DisplayClass22_0 1.<WriteAsync>b__0(T m) at Microsoft.Azure.SignalR.ServiceLifetimeManagerBase1.WriteCoreAsync[T](T 消息,Func`2 任务)

网络作业主要:

应用主机服务:

WebJob 触发代码:

通知服务:

集线器类:

appsettings.json:

包版本:

0 投票
1 回答
229 浏览

azure-functions - Azure functions signalR to create chat app?

I'm looking for azure functions with chat application including broadcast, create, update and delete group as well as add, remove user from group.

0 投票
1 回答
150 浏览

signalr - 针对组中的特定用户

ASP.NET Core SignalR

我知道我们可以向群组发送消息。我知道我们可以向用户发送消息。有没有办法向组中的用户发送消息,即先前受众的交集。

据我了解:组是元数据中具有组名的连接的集合,而用户是身份验证声明中具有用户名的集合连接。组中的用户将是属于特定用户并且属于特定组的连接的集合。

从 SignalR 如何在内部工作的 Afaik,这应该是可能的,但很可能没有公开这种方法。

用例:假设您有一群人的聊天组,并且您想向组中的一个用户发送特定的系统消息。例如,假设服务器需要随机选择组中的一个用户并向他们发送一个游戏的密码,其他人不应该知道(假设服务器已经有一个组中所有用户的列表,并且那是不变的,只有连接可能会改变)。消息应该发送给特定用户,而不是发送给他的所有连接。他可能还有其他一些对不同聊天组处于活动状态的连接,因此我们不想通知这些连接。我们只想定位属于该用户且当前属于特定聊天组的连接。

我在无服务器模式下将 Azure SignalR 服务与 NodeJS Azure Function Apps 一起使用。C# 中默认服务器模式的答案也会有所帮助。

0 投票
1 回答
1359 浏览

azure-functions - 使用 Azure 函数及其协商函数连接到无服务器 Azure SignalR 服务

我将无服务器 Azure Functions (NodeJs) 集成到无服务器 Azure SignalR 服务中。

我可以通过 Azure 函数中的协商函数将 Javascript 很好地连接到 SignalR。

下面的连接被初始化到我的函数应用程序,它为它返回 signalR uri 和 accessToken,@microsoft/signalr 库知道如何使用它,它使用它们在内部连接到 signalR

一切正常。

但是我如何从 .Net Core 控制台应用程序中执行相同的操作?

.Net Core 也可以使用相同的协商功能吗?还是我必须直接连接到 signalR?哪个库是正确的:

  • Microsoft.AspNetCore.SignalR.Client
  • 微软.Azure.SignalR;
  • 其他?