问题标签 [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 投票
1 回答
117 浏览

signalr - 手机启动画面出现时的 Signalr 最佳实践

我有一个信号器页面实现,在查看屏幕时效果很好。但是,如果我在手机上并且它进入启动屏幕,并且我回到手机时浏览器窗口仍然存在,则没有发生更新。

我必须等待下一次更新,在我重新登录并查看下一次更新后,当初始屏幕显示为 1:00 时钟时,这可能需要 5:00 时钟。就是感觉不对。

如果需要,有没有办法通过信号器继续更新页面或手动刷新它。最佳做法是什么?

刚刚发生的另一个例子是,当我的启动页面出现时,游戏还剩 10 秒。我重新登录查看它,它仍然停留在 10 秒,因为游戏结束后不会再出现更新。

0 投票
1 回答
339 浏览

asp.net-mvc-5 - signalr2 asp.net,vc5 如何为发送和接收的消息设置不同的 CSS 样式?

我使用 ASP.NET MVC 5 和 SignalR 2 。我在一个视图中有一个聊天页面,在另一个部分视图中有一个聊天页面,发送消息和接收消息的样式不同。如何将此样式设置为发送和接收的消息?

互联网上的所有信件都是在一个视图中聊天。所以没有不同的风格。

我使用这个链接:https ://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc

谢谢 :)

0 投票
1 回答
274 浏览

signalr - 如何维护服务器集线器可以调用的客户端方法列表?

对于 SignalR 2.1,如何维护服务器集线器可以调用的客户端方法列表?

根据SignalR 和 ASP.NET Core SignalR - Hub Proxies 之间的差异,“不再自动生成 Hub 代理”。

是否存在维护服务器集线器可以调用的客户端方法列表的现有解决方案?

在我们决定使用代码生成推出自己的方法之前,寻找一种定义服务器集线器调用的客户端方法的解决方案。

0 投票
0 回答
452 浏览

angular - Angular 6 应用程序无法连接到 Web API signalR

我有带有 web api 和 angular 2 的“旧”项目。现在我将 angular 2 切换到 6,并且 signalR 有问题。在 Angular 2 上,我使用 'ng2-signalr' 作为 angular 并且效果非常好。对于 angualr 6,我正在使用“@aspnet/signalr”,并且该库无法连接到 Web api 集线器。令人困惑的是,协商调用返回为 200,但应用程序未连接到 Web api,如下图所示。 在此处输入图像描述

但是,我也收到以下错误: 在此处输入图像描述

这是从 Angular 6 应用程序连接的代码:

最后,Angular 应用程序无法连接到 Web Api 集线器。有任何想法吗?:)

0 投票
0 回答
178 浏览

c# - JIT SignalR Hub 发送和接收

到目前为止,在过去的 3 个月中,我仍然对 SignalR 在 JIT(即时)级别的工作方式一无所知。我正在尝试构建一个集线器,及时向客户端发送数据,然后客户端将接收数据并与之一起工作。

编辑:如果你不知道我所说的 JIT 发送和接收是什么意思,

我的意思是当有新数据可用时,服务器能够发送连接的套接字客户端数据。只有当服务器关闭/出现问题或客户端与套接字断开连接时,套接字连接才会关闭。所以简而言之,不管怎样,当服务器产生新数据时,它总是会一个接一个地将数据发送给连接客户端。

所以这就是我错过/困惑的:

  1. SubscribeToAll(查看下面的 TickerHub.cs)方法是当我有新数据要通知客户并向客户发出哔哔声时我调用的地方还是它在哪里?
  2. 我知道异步 WriteToChannel 是如何工作的。基本上,它会逐项向客户端发送一个集合。关键问题是,如何将整个函数转换为 JIT?我在哪里处理订阅此集线器的客户列表?

目前,TickerHub.cs 不断检索数据集(名为 CurrencyPairs),然后无限期地将其广播给客户端。我有一个后台服务,可以 24/7 同步和更新 CurrencyPairs。我只需要 SignalR 专家的帮助来解释/展示如何从后台服务调用集线器,然后允许集线器将新数据广播到连接的客户端。

TickerHub.cs

如果您想了解我的客户端代码是否无法正常工作,请查看这里

0 投票
0 回答
332 浏览

wpf - SignalR aspNet 核心 .Net WPF 客户端未连接到生产环境中的服务器

我使用带有 asp.net 核心的 WPF 作为服务器,对于客户端和服务器通信,我们已经实现了 signalR 框架。

当我通过 Visual Studio / 开发环境运行项目时,它正在无缝连接。当我为 WPF 应用程序进行设置时,它会通过屏幕截图中显示的以下异常。

在此处输入图像描述

我已经更正了所有与 asp.net 核心、客户端和服务器的 signalR 核心相关的软件包版本,它们都在 Microsoft 文档指定的相同版本下。

aspnet SignalR 和 AspNet Core SignalR 的区别

我正在使用的版本

在此处输入图像描述

在此处输入图像描述

谁可以帮我这个事。

0 投票
3 回答
1101 浏览

asp.net-mvc - 如何安全地向特定用户发送消息

我正在使用 ASP.NET MVC 5 和 SignalR。我想向特定用户发送消息。我遵循了本教程中解释的方法(也由这个答案建议)。

我已覆盖IUserIdProvider, 以UserId用作connectionId

我已经对我的应用程序进行了更改以Startup使用上述自定义提供程序:

现在我的客户端可以将目标ClientID传递给集线器,集线器只会将消息转发给请求的客户端,这是我的集线器:

这工作得很好。我的问题是关于安全性,这是否是安全网站的正确方法?

根据SignalR Security 简介,随机生成的连接 id 是 SignalR 安全性的一部分:

服务器不会处理来自与用户名不匹配的连接 ID 的任何请求。恶意用户不太可能猜到有效请求,因为恶意用户必须知道用户名和当前随机生成的连接 ID。

上面的方法是用固定的替换随机选择的connectionIdUserId ......上面的代码有什么安全问题吗?


注意:我正在一个电子商务网站上工作,即使用户处于离线状态,用户也需要能够接收消息(消息将存储在数据库中,一旦在线,他们就可以阅读)。

0 投票
1 回答
515 浏览

asp.net-mvc - Signal R $.connection.chatHub 在我的 javascript 文件中未定义

'.chatHub' 在我将所有信号 r 代码移动到每个页面上加载的包后,在页面加载时未定义

我已经成功安装了 singal r,并且可以在我的 Asp.Net MVC 站点中将聊天消息从一个用户发送到另一个用户。但是 MS 文档只显示了一个页面的实现,现在我想将消息发送给不同页面上的另一个用户。

因此,我将 javascript 集线器连接/初始化代码移动到名为 my-chat.js 的文件中,该文件会加载到每个页面上,并将信号 r js 文件和信号 r 集线器引用放在这样的包中

在我的布局页面中,它以正确的顺序加载,就像这样

但是当我加载主页/第一页时,'my-chat.js' 调用

scope.initializeHub()

看起来像这样,'$.connection.chatHub' chatHub 是未定义的

这是正确的方法吗,也许是

“~/信号器/集线器”

在捆绑包中不是我应该放的地方吗?

我也试过把

在我的布局页面的头部,但那不起作用,抛出一个错误,说“无法获得未定义的属性‘signalR’”或空引用

0 投票
1 回答
696 浏览

signalr - 错误 @types/signalr/index.d.ts 不是 ta 模块

我正在尝试将信号器与 Typescript 一起使用。服务器端是 ASP.NET(不是 ASP.NET CORE)我安装了 signalR(https://www.npmjs.com/package/signalr)和@types/signalr(https://www.npmjs.com/package/ @types/signalr)。

我的导入如下所示:

问题是我收到一个错误:“文件'... /node_modules/@types/signalr/index.d.ts' 不是模块。

不知道该怎么做。只有使用 signalR 库我才有这个问题。

0 投票
0 回答
145 浏览

identityserver4 - javascript SignalR 客户端和 .net 核心后端之间的不稳定连接

我的 JavaScript SignalR 客户端经常连接到我的 IdentityServer4 的 asp.net 核心实现。

在客户端我看到:

但是,它在很多时候也没有连接,错误是 JSON 中的位置 0 存在意外标记。

似乎它运行得很好,然后又很糟糕,即使我重新登录,它仍然会抛出错误。在浏览器中,调用总是或多或少类似于:

我似乎不需要中间件来将查询字符串值移动到标题中,我仍然在 onConnect 期间让用户在我的集线器中使用他们的子声明等。但是,如果我确实在 app.UseAuthentication 之前放入中间件() 并注意:

当它与服务器成功握手时,我看到:

但是如果没有,我会看到:

?client_id=internal&redirect_uri=https%3A%2F%2Flocalhost%3A5001%2Fsignin-oidc&response_type=code%20id_token&scope=openid%20profile%20offline_access%20Harvey&response_mode=form_post&nonce=636817245670169226.ZWM2OWQ0ZWEtOTQzMC00YTJlLWI4MzQtYmIxZDZjOWVlYjg5ZTA4NTU2M2QtNjczZi00MTlmLThjYmQtZWUzZTQ1ODMzNDQ0&state=CfDJ8MCxOjJiJLdKqZrnPwOHDhqMnzWz6MqRb03SxToClqQ1F3n9g8yLdW683HRpZSHd-5wkN-6je4tHJkA8sc5i6YoKRxtMHwnWqxVW5-nXFaaH0TfOLUeqfxDzXLxnftmWFXLjK3Y7b6R2WzcDLEjChU1_Fk6X64SAHNRqeizGDPzRhxpV0U5w19Bbt7pUyRbYymn2WNedCS1F7g_wtwtJXDjCzWKBxqvPZ5Dtg99gxKkANalKYs7C4-fm7YdD0gFvsuV4CXsu0T06MjzID_zpA_F7TmSue4vGI-0_qY55Swc5mbLWUwKHtj6ZTfOG4UmTEP_hbj2PO9w2oNg9TWqTPtDC3-qSl1fTUkY0EtCwbA7F&x -client-SKU=ID_NETSTANDARD1_4&x-client-ver=5.2.0.0

所以我要么不需要这样做,因为它自己成功,要么查询字符串永远不会进入中间件移动(这可能是它不能自己做的原因)

我缺少什么让它始终如一地工作?

将混合客户端添加到 IdentityServer4:

然后在 mvc 客户端上启动:

这是根据示例建模的:Quickstart5_HybridAndApi

在服务器上的 SignalR 中:

SignalR JavaScript 客户端: