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

asp.net-mvc - SignalR + 通过操作方法向 Hub 发布消息

我正在使用 SignalR ( https://github.com/SignalR/SignalR ) 的 hub- 功能向所有订阅的客户端发布消息:

这在通过 Javascript 调用“发送”时工作正常,但我也希望 Web 应用程序发布消息(从 ASP.NET MVC 操作方法中)。我已经尝试实例化一个新对象 ob NewsFeedHub 并调用 Send 方法,但这会导致错误(因为未设置集线器的底层“连接”)。有没有办法在没有连接的情况下使用集线器?

0 投票
5 回答
64524 浏览

c# - 从系统中的其他地方调用 SignalR 集线器客户端

我已经设置了一个 SignalR 集线器来在服务器和客户端之间进行通信。中心服务器端代码存储在名为 Hooking.cs 的类中。我想要的是能够调用 Hooking.cs 中定义的方法,以允许我从应用程序中的任何位置向任何连接的客户端广播消息。似乎为每个客户端/服务器调用创建了一个新的 Hooking.cs 实例,所以我希望我能够使用类似的东西

使用 Hooking.cs 中定义的方法 Test() 例如

并使用客户端javascript


不幸的是,它并不是那么简单,因为客户端不是静态的,因此无法从静态方法访问。

通过 SignalR 源代码,我发现了一个看起来很有希望的方法Hubs.Invoke(string hubName, string method, params object[] args),所以我希望我可以使用诸如Hubs.Invoke("Hooking", "Test")但我不能让它工作的东西。

对此的任何帮助将不胜感激

0 投票
3 回答
17305 浏览

c# - SignalR 不在服务器上使用 Session

当我尝试HttpContext从 HUB 访问当前会话时,它会返回null.

我尝试使用该界面IRequiresSession,但没有用。有人能帮我吗?

0 投票
10 回答
32895 浏览

c# - Signalr/Hub 未在 IIS 7 中加载,但在 Visual Studio 中正常工作

我正在使用 SignalR 的 Asp .Net 4.0 框架上开发一个 Web 应用程序,并从 Nuget 包安装它。当我在没有本地调试的情况下调试或运行应用程序时,它可以正常工作。但是,当它被部署到生产服务器时,它无法找到signal/hubs动态注入到 httphandlers 中的文件。由于它的动态特性,它必须动态创建,所以我也不能将工作文件复制到项目中。

我尝试了以下加载文件的方法:

在后面的代码中:

所有这些都在本地工作,但不在服务器上。在 html 中呈现的路径看起来是正确的,但那里没有文件,从而产生 404 错误。如果这很重要,服务器已给予应用程序完全信任,并且该应用程序作为应用程序在 IIS 中使用子域的另一个站点下运行。

0 投票
4 回答
7885 浏览

asp.net-mvc-3 - SignalR + 依赖注入问题

我在我的 MVC3 应用程序中使用 SignalR,并且由于我已经在我的控制器上实现了 StructureMap 依赖注入,我想在我的集线器中做同样的事情,但我似乎无法让它工作。

请告诉我下面的代码有什么问题:

SignalRSmDependencyResolver.cs

SignalRExtensionsRegistry.cs

国际奥委会

AppStart_Structuremap.cs

NotificationsHub.cs

谢谢

0 投票
1 回答
5145 浏览

asp.net-mvc - 为所有客户端创建相同的 SignalR Hub

我刚刚开始测试 SignalR 以监控应用程序。我有一个控件,它由客户端调用集线器。我注意到,每次客户端创建 Connection.Hub.Start() 它都会在服务器中创建一个新的 Hub 实例,我需要一直刷新我的控件,所以我不希望它为每个创建新的 Hub。

有没有办法为所有客户创建单个集线器,或者我错过了什么?

0 投票
2 回答
4238 浏览

.net - SignalR 集线器可扩展性问题

我们有一个名为 StatusUpdateHub 的 SignalR 集线器。此集线器由名为 HubClient 的 .NET 客户端更新。该客户端将(在生产中)被多个用户每秒调用大约 1000 次,用于不同的事务。这是客户端代码:

当使用 100 个并发用户调用此代码时,它工作正常,但是当我们将并发用户数增加到 250 时,我们会看到以下错误:

UpdateBrowser 中出现意外错误:System.InvalidOperationException:尚未建立连接。在 SignalR.Client.Connection.SignalR.Client.IConnection.Send[T](String data) 在 SignalR.Client.Hubs.HubProxy.Invoke[T](String method, Object[] args) 在 SignalR.Client.Hubs。 HubProxy.Invoke(String method, Object[] args) at Application.Services.HubClient.<>c_DisplayClass2.b _0 (Task task1) in c:\Build\Work\Application\Services\HubClient.cs:line 20
at System .Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
在 System.Threading.Tasks.Task.Execute()

让我们知道如何使代码更具可扩展性?

0 投票
1 回答
1302 浏览

signalr - 管理中心客户端请求的状态服务器端

我创建了一个非常基本的集线器,我通过一个组获取IHubContext并调用我的 javascript 客户端方法,因此无论他们有多少不同的连接,我总是可以将数据推送给同一个用户,我将一些文本传递给和该文本附加在浏览器的多行文本框中。

这一切都非常好。该线程通常会运行长操作,通常使用集线器上下文附加有关操作状态的文本报告以调用客户端。

但是,我希望满足有人关闭浏览器然后稍后返回带有文本框的页面的情况。

现在,他们将开始从他们连接的操作点开始接收文本。如何从客户端向服务器发送请求以从操作开始时检索所有文本?

我的想法是有一个StringBuilder对象,我将每一行与我发送到客户端集线器的文本相同。

然后在连接集线器时,从客户端调用服务器端函数,该函数请求可以从StringBuilder对象中获取的全文ToString();

StringBuilder但是集线器如何知道从仍在执行的线程中从哪里获取对象呢?

或者

如果有办法将其推送到客户端,我如何在执行线程中知道用户已连接并将其发送StringBuilder ToString()给用户?

注意。我不想每次都重新发送完整的字符串!只有当用户刚刚连接并需要赶上时。

我认为了解如何做到这一点将有助于了解如何在集线器之外的服务器上处理 signalR 和状态。谢谢你。

0 投票
1 回答
411 浏览

asp.net - SignalR - 从外部 Http 上下文向 Silverlight 推送通知

我是 SignalR 的新手,正在尝试向 Silverlight 客户端发送推送通知。

我们的 Web 项目不是 Asp.Net MVC - 只是 ASP.NET。

我创建了一个简单的 Hub 类:

问题是我们有一些消息通过消息队列(Rhino 服务总线)进入我们的 Web 服务器。处理消息时,我们希望向 UI 发送通知。但是 RSB 工作线程在 HttpContext 之外运行,因此在调用 SendMessage 方法时,Clients 属性为空。

我试图通过将 ServerHub 添加到 Http 缓存中来解决此问题,然后从消息使用者中检索它。仍然有同样的问题 - 集线器的属性为空。

有什么建议么?

谢谢。

0 投票
2 回答
3396 浏览

asp.net-mvc-4 - $.connection.(hubname) 未定义。信号器/集线器 501(未实现)

我有一个 MVC 4 应用程序,它有一个注册页面。

集线器的代码如下:-

同样,JS hub 代码是:-

现在,运行后得到 $.connection.messageHub as undefined

调试模式截图

其次,我的 chrome 网络显示;- 网络-Chrome

第三,当单击信号器/集线器的启动器时,我得到未实现错误:- 在此处输入图像描述

我尝试更改脚本的 URL,也作为 IIS 运行,但无法正常工作。如果我将我的脚本保存在 .cshtml(视图)中并更改 -> 使用本地 IIS Web 服务器,它的工作正常任何帮助。!