Tag: signalr

SignalR hub中的简单Injector per-web-api-request依赖

根据这篇文章,应该可以将每个Web请求依赖项注入SignalR集线器(尽管有一些限制,如OnDisconnected()方法的问题)。 在我的情况下,它是ASP Web API(而不是MVC),并且由于某种原因它不起作用。 以下是相关部分: container.RegisterWebApiControllers(httpConfiguration); container.RegisterWebApiRequest(); container.RegisterWebApiRequest(); //DbContext injected to SampleRepository //Enable injections to SignalR Hubs var activator = new SimpleInjectorHubActivator(container); GlobalHost.DependencyResolver.Register(typeof(IHubActivator), () => activator); 这个类可以注入集线器: public class SimpleInjectorHubActivator : IHubActivator { private readonly Container _container; public SimpleInjectorHubActivator(Container container) { _container = container; } public IHub Create(HubDescriptor descriptor) { return (IHub)_container.GetInstance(descriptor.HubType); } } 和Hub本身: […]

在AppPool循环后重新连接时,MVC5挂起在MapSignalR上

我在Startup.SignalR.cs中有以下代码: using Microsoft.AspNet.SignalR; using Owin; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Admin { public partial class Startup { public void ConfigureSignalR(IAppBuilder app) { var Config = new HubConfiguration() { EnableDetailedErrors = false, Resolver = new DefaultDependencyResolver() }; #if DEBUG Config.EnableDetailedErrors = true; #endif // Any connection or hub wire up […]

升级到SignalR-2.0.0-beta2时未生成/ signalr / hubs

我有一个像SignalR 1.1.2上运行的应用程序的工作聊天,它将被放到负载平衡的服务器上,所以我需要实现一个背板解决方案来同步服务器。 这是一个ASP.NET MVC4 .NET 4.5应用程序。 使用SignalR Hub ,而不是持久连接。 该应用程序利用客户端的AngularJS来处理ui绑定和更新。 我按照此处列出的步骤实现了sql server背板,并使用了此处概述的1.x到2.0迁移中概述的步骤。 解决方案构建,但是当点击使用SignalR的页面时,“/ signalr / hubs”脚本引用返回500错误。 这是我到目前为止所采取的步骤列表。 使用nuget,删除了与SignalR 1.1.2相关的所有引用和依赖项。 双重检查/ bin和/ packages目录以确保它们不再引用任何旧库。 这是关于2.0升级的github 问题上发现的评论,表示卸载和重新安装SignalR是升级的方法。 通过软件包管理器控制台(PMC) Install-Package Microsoft.AspNet.SignalR -Pre SignalR 2.0.0-beta2 Install-Package Microsoft.AspNet.SignalR -Pre 使用PMC Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre安装的SQL Server消息传递背板 删除了RouteTable.Routes.MapHubs(); 来自Global.asax 在项目的根目录中创建了Startup类。 Startup.cs using Microsoft.AspNet.SignalR; using Microsoft.Owin; using Owin; namespace My.NameSpace { public class Startup { […]

SignalR sqlServer监听

我注意到github上有一个SignalR.SqlServer类。 https://github.com/paigecook/SignalR/tree/master/SignalR.SqlServer 想知道我是否可以用它来监听数据库更新并将它们发送给客户端? 如果是,是否有关于此function的任何文档/示例?

SignalR – 检查用户是否仍然连接

我有一个方法集线器,称为客户端。 此方法启动一个带有委托的计时器,该委托每10秒运行一次。 由于如果没有人连接到集线器,继续运行此委托是没有意义的,我想在重新计划之前检查是否有任何用户仍然从委托内部连接。 有没有办法做到这一点?

HttpContext和SignalR HubCallerContext之间的统一静态类

我有很多依赖于HttpContext.Current的代码,我注意到来自SignalR集线器的请求有HttpContext.Current == null ,所以我的代码断了,例如: HttpContext.Current.Request.IsAuthenticated 所以我想出了以下内容: public static class UnifiedHttpContext { private static HubCallerContext SignalRContext { get; set; } private static int SignalRUserId { get { return WebSecurity.GetUserId(SignalRContext.User.Identity.Name); } } private static bool IsSignalRRequest { get { return SignalRContext != null; } } public static void SetSignalRContext(HubCallerContext context) { SignalRContext = context; } public static […]

将SignalR用于桌面应用程序是否正确?

SignalR适用于Windows桌面应用程序(winforms / wpf)吗? 使用SignalR与Windows桌面应用程序有什么优缺点? 有任何性能方面的考虑吗? 我想在服务器和许多客户端之间建立实时连接。 连接将是不变的。

如何基于HTTP头创建自定义身份validation机制?

我将旧版本的问题留在底部。 我想为SignalR客户端实现自定义身份validation。 在我的例子中,这是Java客户端(Android)。 不是网络浏览器。 没有表单身份validation,没有Windows身份validation。 这些是使用java库的普通vanilla客户端。 所以,假设连接到HUB的客户端传递自定义标头。 我需要以某种方式根据此标头validation用户。 这里的文档提到它是可能的,但没有提供有关如何实现它的任何细节。 这是Android方面的代码: hubConnection = new HubConnection(“http://192.168.1.116/dbg”, “”, true, new NullLogger()); hubConnection.getHeaders().put(“SRUserId”, userId); hubConnection.getHeaders().put(“Authorization”, userId); final HubProxy hubProxy = hubConnection.createHubProxy(“SignalRHub”); hubProxy.subscribe(this); // Work with long polling connections only. Don’t deal with server sockets and we // don’t have WebSockets installed SignalRFuture awaitConnection = hubConnection.start(new LongPollingTransport(new NullLogger())); try { […]

如何从外部调用SignalR集线器方法?

这是我的Hub代码: public class Pusher : Hub, IPusher { readonly IHubContext _hubContext = GlobalHost.ConnectionManager.GetHubContext(); public virtual Task PushToOtherInGroup(dynamic group, dynamic data) { return _hubContext.Clients.Group(group).GetData(data); } } 我希望使用以下代码在另一个项目中调用此方法: var pusher = new Pusher.Pusher(); pusher.PushToOtherInGroup(“Test”, new {exchangeTypeId, price}); 我想调用PushToOtherInGroup ,在调用方法时我没有得到任何错误。但是推送器不起作用。 这是我的Ui代码: $(function() { hub = $.connection.pusher; $.connection.hub.start() .done(function() { hub.server.subscribe(‘newPrice’); console.log(‘Now connected, connection ID=’ + $.connection.hub.id); }) .fail(function() […]

如何使用SignalR事件以正确的方式保持连接活动?

我正在使用SignalR,ASP.NET和C#开发实时客户端 – 服务器应用程序。 我使用localhost作为主机和VS2013。 我的问题是: 为什么我关闭服务器,在Web客户端上发生“ 重新连接 ”事件? “断开”事件仅在40秒以后发生。 如何减少这个时间? 我需要客户端在启动时连接到服务器。 “重新连接”事件应仅在固定间隔内发生。 如果“重新连接”间隔时间结束,则客户端应作为新客户端连接。 如何归档这个目标? 最后,我想问一下 – 如何以正确的方式使用SignalR 保持连接? 我正在使用此代码: C# public override Task OnDisconnected() { clientList.RemoveAt(nIndex); Console.WriteLine(“Disconnected {0}\n”, Context.ConnectionId); return (base.OnDisconnected()); } public override Task OnReconnected() { Console.WriteLine(“Reconnected {0}\n”, Context.ConnectionId); return (base.OnReconnected()); } 使用Javascript $.connection.hub.reconnected(function () { // Html encode display name and message. var […]