问题标签 [signalr-2]

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 回答
3462 浏览

angular - 对预检请求的响应未通过 signalR 中的访问控制检查

该应用程序一直在 .net core 2.1 中完美运行。signalR 服务器的配置类似于public void ConfigureServices(IServiceCollection services)方法中的以下代码片段:

```

```

在配置方法中,我有以下代码片段:

```

```

Angular 客户端应用程序的代码像以下代码片段一样启动连接:

```

```

正如我所说,此设置一直运行良好。我将 .net 核心应用程序(signalR 服务器)从 2.1 升级到 2.2(dotnetcore SDK 版本 2.2.101),并将 signalR 客户端包升级到 1.1.0。signalR 服务器为 Angular 应用程序和另一个 C# 应用程序提供服务。C# 应用程序完美地连接到 signalR 服务器,它会做它应该做的任何事情,但是 angular 应用程序会产生以下错误消息:

从源“ https://localhost:44303 ”访问“ https://localhost:44314/xyz/test/negotiate?abc=123 ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

在 Angular 应用程序和 C# 客户端应用程序中,signalR 客户端的版本都是 1.1.0。

升级到 .net core 2.2 的任何原因导致此通信失败以及可能的解决方案是什么?!

0 投票
1 回答
1741 浏览

asp.net-mvc - Azure SignalR 服务连接未激活

我从 2.4.0 更新了我们的信号器包,并添加RunAzureSignalRRunSignalR. 在 de 中添加了此代码Startup.cs

但是当我尝试向集线器发送消息时出现异常The connection is not active, data cannot be sent to the service.。找不到任何会发生这种情况或服务无法运行的原因。

当我使用 RunSignalR(自托管)时,一切运行良好。

任何帮助将不胜感激。

0 投票
1 回答
764 浏览

asp.net-mvc - 在不同域上的两个 SignalR 集线器之间共享连接

我目前设置了一个实时聊天网站,该网站访问负责处理 SignalR 交互的子域:

我想介绍第二个使用相同结构的、重复的、基本相同的站点:

两个站点将使用相同的数据库,该数据库存储所有与 SignalR 相关的持久性内容,例如连接、聊天室、聊天消息等。

两个 SignalR 聊天子域是否可以与连接到另一个子域的客户端进行通信?虽然共享数据库意味着共享持久性资源,但我需要这样做,以便当我在 chat.domain1.com 上发布事件时,连接chat.domain1.comchat.domain2.com的客户端都能接收到它们。

似乎通过共享同一个域并使用 CORS 来处理跨域交互来处理这个问题是很常见的,如下所示:

我不能这样做,因为 SignalR 聊天端点使用在主 www 域上设置的 cookie 进行身份验证。这些 cookie 不能跨域共享,即使可以,也要求用户能够在同一台机器上同时登录 domain1.com 和 domain2.com 上的不同帐户。

那么,有什么方法可以用来在这两个集线器之间共享连接吗?两个聊天子域都托管在同一台服务器上?

0 投票
1 回答
949 浏览

signalr - SignalR 客户端错误:在收到调用结果之前连接开始重新连接

我将使用完整的 asp.net SignalR 2.3.0.0 客户端和服务器,而不是 .net 核心信号器版本作为问题的开头。

javascript客户端代码

在服务器端,我在 myServerSideMethod(); 中放置了一个断点;如果我花时间通过这个服务器端代码,浏览器中的失败回调将触发,err =“在收到调用结果之前连接开始重新连接”

Q1。如何延长客户端超时时间,以便 JS 调用在失败之前等待更长的时间(或无限期),这可能吗?

Q2。一旦连接断开,我的理解是无论服务器端方法正在做什么都可能会继续正常进行......但客户端不会知道它......通常如何解决这种情况?(即通知客户端服务器端方法结果?)

0 投票
4 回答
32140 浏览

c# - 如何将 SignalR 与 Angular 7 应用程序连接起来

我根本无法弄清楚如何从 Angular 建立信号器连接。

在https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc使用以下教程

SignalR在 vs2017 中的现有 .Net 4.6 解决方案中添加了一个新的 2.4.0 项目。

我还有一个Angular 7应用程序,我SignalR通过它添加了包npm install @aspnet/signalr

现在我试图在客户端和服务器之间建立一个简单的连接,但不知道如何建立初始连接。

我的前端不断抛出异常:

错误:如果连接未处于“已连接”状态,则无法发送数据。

在我的前端搜索组件中,我添加了一些用于测试的字段:

在我的 ts 文件中:

在 c# 方面,我添加了一个SignalR Hub Class (v2)文件 BroadcastHub.cs

以及一个Startup.cs文件:

0 投票
0 回答
79 浏览

signalr-2 - 单个 WebApp 中的多个 SignalR 连接/端点?

一个依赖于三个独立 SignalR 端点的 SPA

假设我们正在构建一个依赖于几个独立后端系统的 SPA(单页应用程序)。基本上是SignalR 集线器的微服务式实现。

  • 这些后端系统中的每一个都公开了一个单独的 SignalR 端点和一组单独的集线器
  • 这些集线器跨不同后端系统的分离在设计上是有意的,不能统一为一个
  • 基本上,与应用程序的单个浏览器会话必须为我们所依赖的每个端点维护单独的 SignalR 连接。

从我们收集到的信息来看,这种方法不会扩展,因为在撰写本文时,大多数浏览器似乎都实现了并发 websocket 连接的任意限制。

这导致我们提出以下问题:

  • 我们认为这不会在浏览器中扩展的假设是否正确?
  • 如果我们的假设是正确的,我们的选择是什么?我们是否需要实现一个单一的包含 SignalR 端点?
0 投票
1 回答
33 浏览

signalr - 另一个“不使用主题怎么能做到这一点?" C# 问题

StackOverflow 上有很多关于使用 ReactiveX 和是否使用Subjects问题。这些问题中的大多数最终都会被人们在哲学基础上来回争论,最终在实际示例中相当轻松,并且谈论而不是“正确”方法与“最佳”方法。

我编写了一个简单的示例类,它尝试将 SignalR 的 IHubProxy.On 桥接到 IObservable。

这是我的课,请告诉我如何重写这门课,这样就不需要主题了。

我只是看不到这样做的方法。

0 投票
1 回答
72 浏览

c# - 为所有用户运行一次服务器功能

晚上好,

在我的 SignalR 应用程序中,我有一个“同时”为所有用户运行的 javascript 计时器。在这个计时器结束时,一个服务器函数被调用,这就是这个问题开始的地方。由于该函数在计时器结束时调用,因此每个连接的用户都会同时调用它,这是不必要的,因为它将为所有连接的用户返回相同的输出。作为一个逻辑上复杂的功能,让服务器为所有用户不必要地运行它会造成很大的资源浪费。

我怎样才能使它只运行一次(可能是第一次调用它(直到下一个计时器停止))?

先感谢您

0 投票
0 回答
57 浏览

.net - SignalR 客户端未异步处理接收到的数据

我的问题如下:我的 ASP.NET WEB API 服务器(不是核心)具有基本的 SignalR 功能。

基本上在连接的客户端上,我将多组数据返回给客户端

在我的 DataHub.cs

在我的 CustomClass.cs

我的客户使用以下代码

现在的问题是客户端一直在等待服务器端功能完成,然后才开始处理数据。

理想情况下,客户端会在收到数据后立即开始处理数据。是的,服务器正在异步发送它。我通过断点确认了它。

这甚至可能吗?

谢谢

0 投票
1 回答
589 浏览

angular - 带有signalR的角度:多个集线器连接到同一条路线

我的客户代码如下。我有一个信号器路由和集线器连接名称。我能够连接到集线器并获取事件。现在,我需要为同一条路线再连接一个集线器以获取更多事件。

我正在使用“signalr”:“2.3.0”,