问题标签 [signalr-hub]

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

javascript - 使用 signalR 将数组传递给服务器

如何使用 SignalR 将 javascript 中的字符串数组传递给服务器?

我在 javascript 中有一个数组,并希望将其用作集线器的函数

函数应该采用什么类型的参数?

0 投票
5 回答
23098 浏览

asp.net - SignalR 和 HttpContext/Session

我理解为什么 SignalR 不允许您访问 HttpContext。然而,这对我们来说是相当有问题的。让我解释:

我们的应用程序是一个多租户应用程序,用户在登录时选择环境。这基本上是在 HttpSession 中注册 ConnectionStringName。在我们的 SignalR Hub 中,我们需要访问Disconnect. 但这是不可能的,因为此时我们没有 HttpContext 并且无法确定要写入的环境。

任何人都可以向我们提供如何解决这个问题的建议吗?我们有点卡在这个上。

编辑:如果您的解决方案在负载平衡环境中工作,则加分。

0 投票
1 回答
113 浏览

c# - 无论如何,将消息从集线器类发布到另一个集线器的 javascript 处理程序函数

我有 2 个集线器类:集线器 A 和集线器 B。

在 hubA 我有一个执行任务的函数:

我不希望这个函数发回 hubA.messageHandler = function(){...} 我希望能够发回消息hubB.messageHandler = function(){...},但我是从我的hubA集线器类内部调用它。这可能吗?

0 投票
1 回答
814 浏览

signalr - 如何加密 SignalR 自托管集线器

我正在尝试找出利用SignalR中的自托管集线器进行加密的最佳方法。具体来说,我不想让数据包嗅探器发生在纯文本中查看函数调用。我知道如果通过IIS托管,有一些方法可以利用IIS类型加密,但我们需要一个自托管解决方案。

有没有沿着这条路走下去的建议或人?

有没有办法自托管加密集线器?

否则最初的想法是加密/解密通过函数调用的JSON对象?但是您仍然对函数调用进行分组嗅探...

是否可以使用SSL自托管?

客户端如何连接?

有什么建议么?

谢谢!麦克风

0 投票
1 回答
118 浏览

signalr - 确定客户端重新连接到服务器

我在服务器上使用客户端断开事件来确定客户端何时与服务器断开连接。但我需要知道客户端何时重新连接。我可以这样做吗?我在移动设备上的 WebView 中运行 SignalR,我假设信号丢失会导致 SignalR 断开连接在服务器上触发

0 投票
3 回答
10801 浏览

signalr - SignalR - 如何将客户端重新连接到服务器(如何重新启动 SignalR)

SignalR 存在以下问题,用户从移动设备访问我的网站。问题是当手机锁定或用户转到另一个应用程序时,服务器上会触发 Disconnect() 方法(我尝试向服务器发送消息并等待它通过 SignalR 回复但没有来自在服务器上触发 Disconnect 方法后的服务器)。在此之后,它会随着客户端不再连接到服务器而缝合。

客户端如何告诉服务器它回来了?

0 投票
1 回答
6838 浏览

javascript - SignalR 异常记录?

这更多是两个问题,但是:

  1. 为我的 Hub 提供顶级异常处理程序的最佳方式是什么?当前版本的 SignalR 似乎不可能

  2. 当我在集线器中抛出错误时,为什么这实际上对客户端没有任何作用?

    $.connection.hub.error(function() { return alert("test"); });

当我调试时,我可以看到我的错误方法正在连接,但是当我在集线器上抛出异常时,我可以看到从来没有尝试调用我在上面设置的方法。唯一发生的事情是 SignalR 将错误发送到控制台。

作为记录,我可以很好地连接其他事件

0 投票
7 回答
21315 浏览

asp.net-mvc-4 - /signalr/hubs 未在 asp.net mvc4 中加载:抛出 404

这就是我所做的。

  1. 我使用 nuget 为我的 MVC4 项目获取 SignalR。
  2. 在我的控制器中创建了一个 MyHub 类(SignalRTestController.cs)
  3. 在索引操作中,尝试从集线器外部广播消息并返回视图。
  4. 在视图中,引用了所有脚本和 /signalr/hubs。

问题是找不到 /signalr/hubs(抛出 404)。

我的项目有区域,结构如下所示:

  1. MVC项目
    • 领域
      • 子文件夹
        • 控制器
          • SignalRTestController.cs
        • 模型
        • 看法
          • 索引.cshtml
    • 控制器
    • 模型
    • 看法
    • 脚本

signalR 的所有脚本都在 Scripts 文件夹中,我的 SignalRTestController.cs 如下所示:

我的任何 Index.cshtml 都引用了所有的 javascripts 和 /signalr/hubs,如下所示: // 其他 Javascripts

脚本类型="text/javascript" src="/signalr/hubs" />

我认为控制器很好,但我没有得到 /signalr/hubs。它抛出 404 并且 Chrome 控制台中的消息是这样的:

资源解释为脚本,但使用 MIME 类型 text/html 传输:“http://www.myproject.com/signalr/hubs”。未捕获的语法错误:意外的令牌 < 集线器:2 未捕获的 SignalR:加载集线器时出错。确保您的集线器引用正确,例如脚本 src='/signalr/hubs'>。

脚本返回为 html 的原因是服务器返回 404 not found。

我不确定出了什么问题。我认为这可能是一个路由问题。我不确定,如果我们需要在项目中为 /signalr/hubs 添加任何路由信息,或者我在这里遗漏了什么。

仅供参考:当我创建一个新的空 MVC 项目并添加 signalR 并开始处理它时,它工作得非常好。无需添加路由。

另外,我在某些地方同时使用默认路由和属性路由。但是控制器 SignalRTestController 不使用属性路由。

0 投票
2 回答
3806 浏览

asp.net-mvc-3 - SignalR 和大量组

我正在使用 SignalR 的最新版本,它很棒。但是,我最近遇到了一个有趣的扩展问题:似乎 SignalR 在查询字符串中从客户端发送了所有客户端组。我的系统要求一个人加入许多组,这些组代表用户订阅的所有项目,并接收其中任何一个的通知。

大量组(以及我使用 GUID 作为 id)导致查询字符串达到其最大大小,并且 SignalR 停止工作。

这是 Fiddler 在请求网络表单中显示的内容(对 Azure 错误使用长轮询):

我知道我可以增加 IIS 中的查询字符串大小,但是有没有更好的方法来管理组,或者我应该尝试创建我的服务器端分组方案并分别广播到每个客户端?PersistenConnections 可以在这方面提供帮助吗?

谢谢。

0 投票
2 回答
6259 浏览

asp.net - 在 Amazon AWS 上扩展 SignalR

我想知道如何在 Amazon AW 上扩展 SignalR。据我了解,为了扩展 SignalR,我需要在多个 EC2 服务器上部署我的网站。问题是两台或多台服务器之间没有连接。可以选择使用 Redis DB 使服务器相互通信。

我的问题是:

  1. 我还需要扩展 Redis DB 吗?

  2. 消息数据是永久保存到数据库中还是在发送消息时被删除?(我不希望数据库保存消息,因为它会变得非常大)

  3. 亚马逊上是否有任何推荐的配置以开始可扩展的 SignalR 部署?