问题标签 [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.
c# - 从 c# web api 连接到 signalR 集线器
我的任务是尝试将我们的 signalR 集线器移动到带有服务总线背板的天蓝色云服务。那里没有问题。javascript 客户端能够获取 hubs.js 并无错误地连接。我们还有一个 web api 项目需要向集线器发送消息,但我无法连接。我试过的一切都不起作用,连接超时。我一定遗漏了一些东西,但是因为这是我第一次使用 signalR 和 Azure,所以我不知道它是什么。Web api 托管在 IIS 上。
这是我试图用来连接的代码:
我缺少一些配置吗?在 IIS 中需要做些什么?我没有收到任何有用的错误消息,只是连接超时。我可以在浏览器中点击 url(真实的,而不是我粘贴的)并获得“未知传输”。
如果它有帮助,那就是集线器的启动:
azure - 如何在多实例 Azure 应用程序的所有实例上向客户端发送 Azure SignalR 消息
我们正在评估如何通过 SignalR 向连接的客户端发送消息。我们的应用程序在 Azure 中发布,并且有多个实例。我们能够成功地将消息传递给连接到同一实例的客户端,而不是其他实例。
我们最初关注的是 ServiceBus,但我们(可能是错误地)发现 AzureSignalR 基本上应该是一个为我们处理所有后端内容的服务总线。
我们在 Startup.cs 中设置 signalR 如:
问题
我们必须存储一些可能应该在服务总线上的对象,而不是存储在单个实例中;但是,我不确定如何告诉集线器对象应该在总线上,而不是在集线器的特定实例内部,如下所示:
我们有一些函数需要向所有正在查看当前记录的已连接客户端发送消息,无论它们位于什么实例中:
这不适用于不同的实例(这是有道理的,因为每个实例都有自己的对象。但是,我们希望通过使用 AzureSignalR 而不是 SignalR(AzureSignalR conn 字符串具有 Azure 服务的端点),它将处理为我们提供服务总线功能。我们不确定要采取哪些步骤才能使其正常运行。
谢谢。
azure - 消息未通过 Azure SignalR 服务
我正在使用 React 前端的 ASP.NET Core 2.2 应用程序中实现 Azure SignalR 服务。当我发送消息时,我没有收到任何错误,但我的消息没有到达 Azure SignalR 服务。
具体来说,这是一个私人聊天应用程序,因此当消息到达中心时,我只需要将其发送给该特定聊天的参与者,而不是发送给所有连接。
当我发送消息时,它会到达我的集线器,但我看不到消息正在发送到 Azure 服务的任何迹象。
为了安全起见,我使用 Auth0JWT Token
身份验证。在我的中心,我正确地看到了授权用户的声明,所以我认为安全性没有任何问题。正如我所提到的,我能够访问集线器这一事实告诉我,前端和安全性工作正常。
然而,在 Azure 门户中,我看不到任何消息的迹象,但如果我正确读取数据,我确实看到 2 个客户端连接在我的测试中是正确的,即我用于测试的两个打开的浏览器。这是一个屏幕截图:
这是我的Startup.cs
代码:
这是Configure()
方法:
这是我用来将用户映射connectionId
到的方法userName
:
这是我的中心方法之一。请注意,我知道一个用户可能同时有多个连接。我只是简化了这里的代码以使其更容易消化。我的实际代码说明了具有多个连接的用户:
知道我做错了什么导致消息无法到达 Azure SignalR 服务吗?
c# - 如何检查我的 Azure SignalR 服务中的组中有多少连接?
我正在尝试实现 Azure SignalR 服务,以促进桌面、asp.net-core 和 xamarin.ios 应用程序之间的双向消息传递。
我在Hub
这里根据微软的文档创建了一个:
https ://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-2.2
中心:
当用户连接到集线器时,我将用户的连接添加到组,如下所示:https ://docs.microsoft.com/en-us/aspnet/core/signalr/groups?view=aspnetcore-2.2
添加到组:
发送消息时,它有一个组名作为参数,我想在将消息发送到任何注册客户端之前检查提供的组是否有任何连接,如果没有连接,我想发送一个推送通知(已经有推送通知的工作代码)
发送带有通知回退的消息:
问题:我看不到任何方法可以通过可用的 api 检查组中当前的连接数(如果我错了,请纠正我)
我看到该组Microsoft.AspNetCore.SignalR.Internal.GroupProxy<ChatHub>
在运行时返回,没有公共方法。内部私有变量确实包括_groupName
并且_lifeTimeManager
在生命周期管理器中_clientConnectionManager
,我可以看到它们在连接时有客户端连接,但我无法访问其中任何一个,我使用的是Microsoft.Azure.SignalR
(1.0.4) Nuget 包。有谁知道我想用这个 SDK 做什么,如果可以,我该怎么做?
angular - 错误:服务器在关闭时返回错误:当前没有应用服务器连接到 Azure 服务“@aspnet/signalr”
我有一个 MXChip,它将数据发送到 Azure IoT Hub,从那里我使用带有 Azure SignalR 绑定的 Azure Function 将设备数据发布到 Azure Signal R。我有一个 Angular 客户端,它将通过调用获取连接信息我使用包创建的 Azure 协商函数@aspnet/signalr
。
但问题是我的 Angular 客户端每隔几秒钟就会抛出一个错误,当我检查时,我可以理解hubConnection.onclose
事件每隔几秒钟就会触发一次。
下面是我的 Angular 服务代码。
有什么办法可以摆脱这种行为?
azure-signalr - Azure SignalR 超时问题
我在使用 Azure SignalR 服务时遇到问题......通常(几个小时)它很慢,有时甚至会超时......
即使在 SignalR webapp 和 Azure SignalR 服务之间进行协商时,它的速度也很慢。
任何帮助表示赞赏...
asp.net-mvc - Azure SignalR 服务连接未激活
我从 2.4.0 更新了我们的信号器包,并添加RunAzureSignalR
了RunSignalR
. 在 de 中添加了此代码Startup.cs
但是当我尝试向集线器发送消息时出现异常The connection is not active, data cannot be sent to the service.
。找不到任何会发生这种情况或服务无法运行的原因。
当我使用 RunSignalR(自托管)时,一切运行良好。
任何帮助将不胜感激。
c# - 无法与多个用户一起使用 ASP.NET Core SignalR
运行 Azure SignalR 的用户超过 1 个时,我的聊天网站出现问题。例如
用户 A 登录系统并可以正常发送/接收消息,用户 B 也登录并收到 JavaScript 错误。如果用户 A 关闭浏览器窗口,则用户 B 可以正常发送/接收消息,反之亦然。
这是我正在使用的技术:
- ASP.NET Core MVC(.NET 框架运行时)
- Microsoft.Azure.SignalR v1.0.3(免费层)
- Microsoft.AspNetCore.SignalR
- JS 客户端 - https://cdn.jsdelivr.net/npm/@@aspnet/signalr@1.0.3/dist/browser/signalr.min.js
该错误似乎来自 SignalR Javascript 客户端。
这是我收到的 Google Chrome 控制台错误消息:
我的 JS 代码如下所示:
我做了一些调试,它似乎在错误发生之前进入了 chatConnection.send('joingroup') 方法,虽然我认为这是一个红鲱鱼,但我在集线器的 OnConnectedAsync 方法中添加了一些调试并可以确认它也不叫。
我的集线器没有什么花哨的东西,我添加了一些日志记录,看起来当第二个用户尝试使用聊天时集线器可能没有被调用
有谁知道为什么会这样?我也尝试升级到付费 Azure SignalR 层,但仍然遇到同样的问题。
azure - 为什么 Azure SignalR 服务不提供诊断或日志?
Azure Monitor 诊断日志是由 Azure 服务发出的日志,用于描述这些服务或资源的操作。通过 Azure Monitor 提供的所有诊断日志共享一个通用的顶级架构,每个服务都可以灵活地为自己的事件发出独特的属性。
但 Azure SignalR 服务不提供Diagnostic
或Logs
. 该服务有两个项目Monitoring
,它们是Alerts
& Metrics
。如下图所示——
Diagnostic settings
并且Logs
在 Azure SignalR 服务中缺失。有什么具体原因吗?它可以As designed
由 Microsoft 提供,Diagnostic
也Logs
可能不需要,但为什么呢?有几个 Azure 服务的日志,如、Cognitive Services
等。典型的 Azure 服务带有或看起来Recovery Services
Analysis Services
Diagnostic settings
Logs
signalr - Azure Signal R 如何处理应用程序服务器缩放?
我们有一个我们正在修改的现有 Web 服务,以便当服务中发生某些事件时,它们可以发布给感兴趣的用户。我们使用 Azure Signal R 服务作为将消息从我们的服务中继到感兴趣的用户的机制。目前,我们的架构如下所示:
- 我们的 Signal R 应用程序服务器只有一个集线器,我们目前正在运行应用程序服务器的三个实例。我在上图中标记了这些Hub Instance 01、Hub Instance 02和Hub Instance 03 。
- 我们现有 Web 服务的每个实例都会打开一个与 Azure Signal R 服务的连接。在阅读了Azure SignalR 服务内部文档后,我了解到每个与 Azure Signal R 服务的客户端连接都通过一次性映射到应用程序服务器(或本例中的集线器实例)。在图中,我通过显示来自现有 Web 服务实例或用户的彩色链接以及来自 Azure Signal R 服务并进入单个集线器实例的相同颜色和样式的另一个链接来建模。
我们主要担心的是,如果我们尝试发送太多事件,从现有 Web 服务实例到 Azure Signal R 服务的连接(图中的纯绿色和纯蓝色链接)可能会变得饱和。我们减轻这种担忧的计划是打开从每个 Web 服务实例到 Azure Signal R 服务的多个连接。然后,在我们的代码中,我们将在发送消息时简单地循环遍历每个连接。
我们对这种方法的担忧是,我们不知道这些与 Azure Signal R 服务的连接将如何映射到 Hub 实例。我们最终可能会遇到如下情况,其中一两个 Hub 实例最终会首当其冲地占用我们的流量。
在这张图中,我们可以看到:
- 现有 Web 服务的每个实例都打开了与 Azure Signal R 服务的多个连接。不幸的是,已经为Hub Instance 01和Hub Instance 03分配了这些连接的大部分。这意味着他们将在我们的流量中首当其冲,最终将开始火爆。
这导致我提出以下问题:
- 我们可以在现有的 Web 服务中做些什么来确保我们与 Azure Signal R 服务建立的连接均匀分布在 Hub 实例中吗?
- 如果我们的 Hub 实例之一开始热运行,我们该怎么办?似乎只是添加另一个 Hub 实例并没有帮助,因为只会将新客户端分配给该实例。有没有办法在新的 Hub 实例上线时让 Azure Signal R 服务重新平衡连接?
- 如果应用服务器实例出现故障(即部署更新),客户端连接会受到怎样的影响?客户端连接是否终止,然后客户端应该重新连接?
- 在 Azure Signal R 服务中,如果 Signal R 服务集群本身需要扩展或缩减,如何平衡连接?