public void Configuration(IAppBuilder app) { //// Turn cross domain on var config = new ConnectionConfiguration {EnableJSONP = true}; //// This will map out to http://localhost:8080/signalr by default ////app.MapConnection<MyServerConnection>("/messaging", config); //app.Map("/messaging", map => //{ // //.UseCors(CorsOptions.AllowAll); // var hubConfiguration = new HubConfiguration // { // // You can enable JSONP by uncommenting line below. // // JSONP requests are insecure but some older browsers (and some // // versions of IE) require JSONP to work cross domain // // EnableJSONP = true // }; // // Run the SignalR pipeline. We're not using MapSignalR // // since this branch already runs under the "/signalr" // // path. // map.RunSignalR(hubConfiguration); //}); app.MapSignalR<MyServerConnection>("/messaging", config); }
public void Start() { if (_server == null) { _server = WebApp.Start(_url, app => { var config = new ConnectionConfiguration { Resolver = new DefaultDependencyResolver() }; config.Resolver.Register(typeof(CacheConnection), () => new CacheConnection(this)); _context = config.Resolver.Resolve<IConnectionManager>().GetConnectionContext<CacheConnection>(); app.MapSignalR<CacheConnection>("/cache", config); }); } }
public IAppBuilder MapNodeAssets(IAppBuilder appBuilder, ConnectionConfiguration configuration = null) { // NOTE: All the routes are based off 'Map' so we dont have to use middleware etc if (_config.IsLiveCss) { var config = configuration ?? new ConnectionConfiguration(); appBuilder.Map("/" + _config.Namespace, map => { map.RunSignalR<LiveCssConnection>(config); }); } // Add js routes if (_jsManager != null && _jsPile != null) { var pileManager = _jsManager.FindDestinationPile(); HandleRoutes(pileManager, appBuilder); } // Add css routes if (_cssManager != null && _cssPile != null) { var pileManager = _cssManager.FindDestinationPile(); HandleRoutes(pileManager, appBuilder); } return appBuilder; }
public static IDisposable Connect_Broadcast5msg_AndDisconnect(int concurrency) { var host = new MemoryHost(); var threads = new List<Thread>(); var cancellationTokenSource = new CancellationTokenSource(); host.Configure(app => { var config = new ConnectionConfiguration { Resolver = new DefaultDependencyResolver() }; app.MapConnection<RawConnection>("/Raw-connection", config); }); for (int i = 0; i < concurrency; i++) { var thread = new Thread(_ => { while (!cancellationTokenSource.IsCancellationRequested) { BroadcastFive(host); } }); threads.Add(thread); thread.Start(); } return new DisposableAction(() => { cancellationTokenSource.Cancel(); threads.ForEach(t => t.Join()); host.Dispose(); }); }
public static IDisposable ClientGroupsSyncWithServerGroupsOnReconnectLongPolling() { var host = new MemoryHost(); host.Configure(app => { var config = new ConnectionConfiguration() { Resolver = new DefaultDependencyResolver() }; app.MapConnection<MyRejoinGroupConnection>("/groups", config); var configuration = config.Resolver.Resolve<IConfigurationManager>(); configuration.KeepAlive = null; configuration.ConnectionTimeout = TimeSpan.FromSeconds(1); }); var connection = new Client.Connection("http://foo/groups"); var inGroupOnReconnect = new List<bool>(); var wh = new ManualResetEventSlim(); connection.Received += message => { Console.WriteLine(message); wh.Set(); }; connection.Reconnected += () => { connection.Send(new { type = 3, group = "test", message = "Reconnected" }).Wait(); }; connection.Start(new Client.Transports.LongPollingTransport(host)).Wait(); // Join the group connection.Send(new { type = 1, group = "test" }).Wait(); Thread.Sleep(TimeSpan.FromSeconds(10)); if (!wh.Wait(TimeSpan.FromSeconds(10))) { Debugger.Break(); } Console.WriteLine(inGroupOnReconnect.Count > 0); Console.WriteLine(String.Join(", ", inGroupOnReconnect.Select(b => b.ToString()))); connection.Stop(); return host; }
public static IAppBuilder MapNodeAssets(this IAppBuilder builder, IAssets assets, ConnectionConfiguration liveCssConfig = null) { return assets.MapNodeAssets(builder, liveCssConfig); }