天道酬勤,学无止境

How to get the AspNet Core SignalR Transport Protocol in the Hub?

In the old SignalR, you could do this to get the transport in the Hub on the Server:

Context.QueryString["transport"];

But in the new SignalR, written for AspNet Core, I couldn't find where the Transport Protocol can be found within the Hub on the Server. Can it be found? If so, where?

评论

As of ASP.NET Core SignalR 1.0.0-rc1-final (commit), you can get the TransportType from:

// using Microsoft.AspNetCore.Http.Connections.Features;

var transportType = Context.Features.Get<IHttpTransportFeature>().TransportType;

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 带Web套接字的SignalR(SignalR with Web Sockets)
    问题 我正在尝试使Websocket在我的开发环境中工作: Visual Studio 2010 Windows 7的信号R 0.51 最新的Chrome / Firefox 不幸的是,Javscript客户端正在使用长时间轮询。 当我在客户端强制使用网络套接字时,我根本无法连接: $.connection.hub.start({ transport: ['webSockets'] }) 服务器代码是自托管的,基于示例,如下所示: static void Main(string[] args) { string url = "http://localhost:8081/"; var server = new Server(url); // Map the default hub url (/signalr) server.MapHubs(); // Start the server server.Start(); Console.WriteLine("Server running on {0}", url); // Keep going until somebody hits 'x' while (true) { ConsoleKeyInfo ki = Console.ReadKey(true); if (ki.Key == ConsoleKey.X) { break; } } }
  • 如何在ASP.NET Core中获取SignalR Hub上下文?(How to get SignalR Hub Context in a ASP.NET Core?)
    问题 我正在尝试使用以下命令获取中心的上下文: var hubContext = GlobalHost.ConnectionManager.GetHubContext<SomeHub>(); 问题是没有定义GlobalHost。 我看到它是SignalR.Core dll的一部分。 目前,我在项目.json文件中的依赖项中包含以下内容: "Microsoft.AspNet.SignalR.Server": "3.0.0-*" 如果我添加Core的最新可用版本: "Microsoft.AspNet.SignalR.Server": "3.0.0-*", "Microsoft.AspNet.SignalR.Core" : "2.1.2" 我收到很多错误,因为服务器和核心冲突。 如果我将它们都更改为都使用版本“ 3.0.0- *”,则所有冲突都将消失,但是找不到GlobalHost。 如果我删除服务器,而仅使用用户核心版本2.1.2,则GlobalHost可以工作,但是所有其他需要服务器的东西显然都不能。 有任何想法吗? 回答1 Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager是一种DI注入服务,通过它可以获取集线器上下文...例如: using Microsoft.AspNet.SignalR; using
  • SignalR无法读取未定义的属性客户端(SignalR cannot read property client of undefined)
    问题 我正在尝试将SignalR添加到我的项目(ASPNET MVC 4)中。 但是我不能使它工作。 在下图中,您可以看到我收到的错误。 我已经阅读了很多stackoverflow帖子,但是都没有解决我的问题。 这是我到目前为止所做的: 1) Ran Install-Package Microsoft.AspNet.SignalR -Pre 2) Added RouteTable.Routes.MapHubs(); in Global.asax.cs Application_Start() 3) If I go to http://localhost:9096/Gdp.IServer.Web/signalr/hubs I can see the file content 4) Added <modules runAllManagedModulesForAllRequests="true"/> to Web.Config 5) Created folder Hubs in the root of the MVC application 6) Moved jquery and signalR scripts to /Scripts/lib folder (I'm not using jquery 1.6.4, I'm using the latest) 这是我的Index.cshtml
  • How to get SignalR Hub Context in a ASP.NET Core?
    I'm trying to get the context for a hub using the following: var hubContext = GlobalHost.ConnectionManager.GetHubContext<SomeHub>(); The problem is that GlobalHost is not defined. I see it is part of the SignalR.Core dll. At the moment, I have the following in my project .json file, under dependencies: "Microsoft.AspNet.SignalR.Server": "3.0.0-*" If I add the latest available version of Core: "Microsoft.AspNet.SignalR.Server": "3.0.0-*", "Microsoft.AspNet.SignalR.Core" : "2.1.2" I get a whole bunch of errors because server and core are conflicting. If I change them to both use version "3.0.0-*
  • SignalR cannot read property client of undefined
    I'm trying to add SignalR to my project (ASPNET MVC 4). But I can't make it work. In the below image you can see the error I'm receiving. I've read a lot of stackoverflow posts but none of them is resolving my issue. This is what I did so far: 1) Ran Install-Package Microsoft.AspNet.SignalR -Pre 2) Added RouteTable.Routes.MapHubs(); in Global.asax.cs Application_Start() 3) If I go to http://localhost:9096/Gdp.IServer.Web/signalr/hubs I can see the file content 4) Added <modules runAllManagedModulesForAllRequests="true"/> to Web.Config 5) Created folder Hubs in the root of the MVC application 6
  • 您网站上的多个signalR连接/集线器(Multiple signalR connections/hubs on your website)
    问题 如果我有多个页面可以使用多个中心类,那么管理此问题的最佳方法是什么? 例如: 导航到网站上的另一个页面并从本质上“重新打开”与上一页中打开的同一集线器类的连接是否不好? 我是否认为在页面上打开多个集线器连接是正确的,因为即使它们是不同的集线器类,它们也都统一在一个连接中? 回答1 您可以有多个集线器在您的站点上共享一个连接。 SignalR 2.0已更新,可以通过一个信号连接处理多个集线器,而不会降低性能。 官方文档:http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#multiplehubs 所有客户端将使用相同的URL与您的服务建立SignalR连接(“ / signalr”或您的自定义URL(如果您指定了一个)),并且该连接用于该服务定义的所有集线器。 与在单个类中定义所有集线器功能相比,多个集线器没有性能差异。 回答2 要开始使用集线器,请阅读集线器和集线器的客户端的WIKI条目。 根据多个页面的上下文,有几件事情。 启动集线器时,它将为您的客户提供一个ID,该ID在多个页面上都与该集线器相同(可以通过示例进行确认)。 重新打开与同一集线器的连接也不错。 您可能在所有页面上都运行hub.start客户端方法,但是,如果一个客户端打开多个窗口或从一个页面转到另一个页面
  • Android Studio中的SignalR集成(SignalR integration in android studio)
    问题 我在项目中使用signalR lib。 但我无法自行编译https://github.com/SignalR/java-client的库-我在互联网上找到了它们。 但似乎还不完整(缺少WebsocketTransport) 当我编译https://github.com/SignalR/java-client时,我得到了两个库,并将它们粘贴到我的app.gradle中- compile files ('libs/signalr-client-sdk.jar') compile files ('libs/signalr-client-sdk-android.jar') Progects很烂,但是当我按Run时-它失败了。 这是堆栈跟踪- UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472) at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java
  • What causes SignalR to receive net::ERR_CONNECTION_RESET on connect?
    I have a simple SingulaR example that I've added to a legacy ASP.Net MVC application. Here are the various parts: OWIN Startup class [assembly: OwinStartup(typeof (Startup))] namespace MyApp.Web { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } } } SignalR Hub using System.Collections.Generic; using Microsoft.AspNet.SignalR; using Microsoft.AspNet.SignalR.Hubs; namespace MyApp.Web { [HubName("podService")] public class PodServiceHub : Hub { public PodServiceHub() { ; } public IEnumerable<string> GetMessages() { return new[] {"blah", "blah", "blah"}; } }
  • Setting up Signal R in Android: Crash/Hung Issue
    I followed THIS tutorial to set up a .NET Backend for my Android app to implement Signal R. I set up a SignalR Self-Hosted backend. Here's my Backend Code in a Console Project: namespace SignalRSelfHost { class Program { static void Main(string[] args) { // This will *ONLY* bind to localhost, if you want to bind to all addresses // use http://*:8080 to bind to all addresses. // See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx // for more information. string url = "http://localhost:8080"; using (WebApp.Start(url)) { Console.WriteLine("Server running on {0}", url)
  • 我可以同时包含SignalR和RESTful API吗?(Can I incorporate both SignalR and a RESTful API?)
    问题 我有一个使用ASP.NET开发的单页Web应用程序。 最近,我使用SignalR库将许多Web方法转换为基于推送的方法。 这确实大大加快了页面速度,并减少了该页面中的许多服务器调用。 同时,我也一直在研究一些服务器端方法的RESTful ASP.NET WebAPI,其真正的美在于,它允许在我开发RESTful ASP.NET WebAPI的同时为外部应用程序创建API。核心应用程序(这对我正在做的事情很重要)。 但是,在看了几篇文章和这两个问题之后,push和WebAPI方法似乎是客户端-服务器通信的两个完全不同的范例。 我确定我可以创建可以通过任一协议访问的各种方法,但是我不确定是否存在陷阱或认为这很草率-也许有一种更优雅的方法可以实现我的目标为了。 当然,在某些情况下,我希望RESTful WebAPI通过SignalR集线器广播事件...相反(SignalR曾经需要访问WebAPI)似乎不太可能,但我想仍然可能。 有人做过吗? 有人对如何进行有任何建议或提示吗? 在这里,最优雅的前进方向是什么? 回答1 观看此博客文章中的视频。 它准确地解释了如何将WebAPI与SignalR一起使用。 本质上,Web API + SignalR集成包含在此类中: public abstract class ApiControllerWithHub<THub>
  • SignalR可以与asp.net WebForms一起使用吗?(Can SignalR be used with asp.net WebForms?)
    问题 我想在我的项目中使用SignalR进行实时更新。 我的项目是在WebForms开发的。 我搜索了3,4天,但发现的只是MVC示例。 有人可以提出解决方案吗? 回答1 您可以将SignalR与Webforms一起使用。 请参阅下面的教程示例 创建一个针对.NET Framework 4.5或更高版本的新ASP.NET WebForms项目更改主页以包含以下内容<asp:content runat="server" id="BodyContent" contentplaceholderid="MainContent"> <h3>Log Items</h3> <asp:listview id="logListView" runat="server" itemplaceholderid="itemPlaceHolder" clientidmode="Static" enableviewstate="false"> <layouttemplate> <ul id="logUl"> <li runat="server" id="itemPlaceHolder"></li> </ul> </layouttemplate> <itemtemplate> <li><span class="logItem"><%#Container.DataItem.ToString() %></span><
  • MVC5 hangs on MapSignalR when reconnecting after AppPool cycles
    I have the following code in my 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 and configuration should go here app.MapSignalR(); GlobalHost.Configuration
  • 使用Ninject进行SignalR 2依赖注入(SignalR 2 Dependency Injection with Ninject)
    问题 我有一个现有的MVC应用程序,该应用程序与Ninject一起使用了依赖注入。 我安装了Ninject.MVC3 nuget软件包,它在App_Start中创建了一个名为NinjectWebCommon的类,该类完全隔离内核并注册我的所有绑定: public static void Start() { DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); bootstrapper.Initialize(CreateKernel); } private static IKernel CreateKernel() { var kernel = new StandardKernel(); kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); RegisterServices(kernel); return kernel; }
  • OWIN + SignalR + Autofac(OWIN + SignalR + Autofac)
    问题 摘自:http://docs.autofac.org/en/latest/integration/signalr.html: “ OWIN集成中的一个常见错误是使用GlobalHost。在OWIN中,您是从头开始创建配置的。使用OWIN集成时,您不应在任何地方引用GlobalHost。” 听起来很合理。 但是,应该如何像通常的方式(非OWIN)那样从ApiController解析IHubContext : GlobalHost.ConnectionManager.GetHubContext<MyHub>()吗? 我在任何地方都找不到此引用,并且到目前为止,我唯一的方法是在同一容器中注册HubConfiguration实例并执行以下操作: public MyApiController : ApiController { public HubConfiguration HubConfig { get; set; } // Dependency injected by // PropertiesAutowired() public IHubContext MyHubContext { get { return HubConfig .Resolver .Resolve<IConnectionManager>() .GetHubContext<MyHub>(); } } // ...
  • 如何在Android中使用Signalr(How to use signalr in Android)
    问题 我正在尝试将signalR集成到android应用中,但是没有运气。 我一直在研究各种链接,但没有一个提供有关实现的适当信息。 我有以下问题。 SignalR集成必须在服务/意图服务内部完成吗? 如果我们想通过相同的调用方法接收响应,那么如何获得? 我添加了三个库,即signalr android , signalr client和gson但无法理解代码的工作原理,没有适当的文档可用来理解代码。 提出了一些问题,但没有太多信息 Android Studio中的SignalR无法使用Android中的SignalR实现p2p聊天 如果有人对本机应用程序的信号处理有经验,那对我会非常有帮助。 更新 public class SignalRService extends Service { private static final String TAG = "Service"; private HubConnection mHubConnection; private HubProxy mHubProxy; private Handler mHandler; // to display Toast message private final IBinder mBinder = new LocalBinder(); private SharedPreferences sp;
  • SignalR Requests Throwing “Hub could not be resolved.”
    I've been using SignalR since an early version and upgraded along the way however I have deployed my application to my Windows Server 2008 R2 production server and now the app crashes out with the " Hub could not be resolved." exception. edit: StackTrace Added: [InvalidOperationException: 'stockitems' Hub could not be resolved.] Microsoft.AspNet.SignalR.Hubs.HubManagerExtensions.EnsureHub(IHubManager hubManager, String hubName, IPerformanceCounter[] counters) +426 Microsoft.AspNet.SignalR.Hubs.HubDispatcher.Initialize(IDependencyResolver resolver, HostContext context) +716 Microsoft.AspNet
  • 从控制器的动作中调用集线器方法(Call a hub method from a controller's action)
    问题 如何从控制器的动作中调用集线器方法? 正确的做法是什么? 有人在帖子中使用了它: DefaultHubManager hd = new DefaultHubManager(GlobalHost.DependencyResolver); var hub = hd.ResolveHub("AdminHub") as AdminHub; hub.SendMessage("woohoo"); 但是对我来说,这是在抛出: 不支持使用不是由HubPipeline创建的Hub实例。 我还阅读了您可以创建中心上下文的信息,但我不想赋予该操作以责任,即该操作执行的操作如下: hubContext.Client(...).someJsMethod(..) 回答1 正确的方法是实际创建中心环境。 取决于您的方式和位置,这是两种方法: 在集线器中创建一个静态方法(不必在集线器中,实际上可以在任何地方),然后可以通过AdminHub.SendMessage("wooo")调用它public static void SendMessage(string msg) { var hubContext = GlobalHost.ConnectionManager.GetHubContext<AdminHub>(); hubContext.Clients.All.foo(msg); } 一起避免使用静态方法
  • SignalR和浏览器连接限制(SignalR and Browser Connection limit)
    问题 我用SignalR制作了一个简单的应用程序进行测试。 页面加载后,它将调用服务器上的一个函数,然后该函数将调用一个客户端函数,该客户端函数会在屏幕上打印一条消息。 我这样做是为了检查客户端和服务器功能是否正常以及SignalR通信是否正常。 我的问题是,如果我在两个不同的选项卡上打开同一页面(在Chrome中进行过设置),则第一页加载正常,但是第二页不会调用服务器的功能-仅当我关闭第一页时。 据我了解,它们可能是与浏览器有关的连接限制,不允许SignalR再连接一次(实际上是两个,一个用于接收,一个用于发送) 更新:我发现我们打开了其他选项卡,但是现在我已经检查了它,它只允许4个选项卡/页面与连接处于活动状态。 如果我尝试将同一页面放在新选项卡上,则没有数据正在发送,当我关闭其他选项卡之一时,新选项卡会立即发送数据。 我想知道是否有解决方案,因为如果用户决定在两个或更多选项卡上打开同一页面,我希望此连接可用。 我不认为它与IIS有任何关系,因为据我所知,它可以接受数千个连接。 回答1 将来的Channel Messaging规范可以最好地解决此问题,该规范迄今为止尚未被任何浏览器实现,但是我设法通过限制连接数量(如Alex Ford所述)并使用localStorage作为之间的消息总线来解决此问题。标签。 storage事件使您可以在选项卡之间传播数据
  • SignalR 2.0 error /signalr/hubs 404 (Not Found) when using IIS
    I'm having some issues with SignalR 2.0 in EPiServer 7.5 (a MVC4 framework). All I get is a 404 error GET http://web.com/signalr/hubs 404 (Not Found) I'm hosting everything on a Windows 2012 R2 Server. Also noteworthy is that the solution works when running everything in IIS Express from Visual Studio but not in IIS 8.5. What I've done so far is to add the SingalR references. Microsoft.AspNet.SignalR.Client, 2.0.0.0 Microsoft.AspNet.SignalR.Core, 2.0.0.0 Microsoft.AspNet.SignalR.System.Web, 2.0.0.0 Microsoft.OWin, 2.1.0.0 Microsoft.OWin.Host.SystemWeb, 2.1.0.0 Microsoft.Owin.Security, 2.0.0.0
  • Simple Injector per-web-api-request dependency in SignalR hub
    According to this post, it should be possible to inject per-web-request dependencies into SignalR hubs (although with some limitations like problem with OnDisconnected() method). In my case it is ASP Web API (not MVC) and it does not work for some reason. Here are relevant parts: container.RegisterWebApiControllers(httpConfiguration); container.RegisterWebApiRequest<DbContext, MyDbContext>(); container.RegisterWebApiRequest<ISampleRepository, SampleRepository>(); //DbContext injected to SampleRepository //Enable injections to SignalR Hubs var activator = new SimpleInjectorHubActivator