/
RegisterHubs.cs
81 lines (70 loc) · 3.58 KB
/
RegisterHubs.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Configuration;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
[assembly: PreApplicationStartMethod(typeof(Microsoft.AspNet.SignalR.FunctionalTests.Infrastructure.IIS.RegisterHubs), "Start")]
namespace Microsoft.AspNet.SignalR.FunctionalTests.Infrastructure.IIS
{
public static class RegisterHubs
{
public static void Start()
{
string keepAliveRaw = ConfigurationManager.AppSettings["keepAlive"];
string connectionTimeoutRaw = ConfigurationManager.AppSettings["connectionTimeout"];
string disconnectTimeoutRaw = ConfigurationManager.AppSettings["disconnectTimeout"];
string heartbeatIntervalRaw = ConfigurationManager.AppSettings["heartbeatInterval"];
string enableRejoiningGroupsRaw = ConfigurationManager.AppSettings["enableRejoiningGroups"];
int keepAlive;
if (Int32.TryParse(keepAliveRaw, out keepAlive))
{
GlobalHost.Configuration.KeepAlive = keepAlive;
}
else
{
GlobalHost.Configuration.KeepAlive = 0;
}
int connectionTimeout;
if (Int32.TryParse(connectionTimeoutRaw, out connectionTimeout))
{
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(connectionTimeout);
}
int disconnectTimeout;
if (Int32.TryParse(disconnectTimeoutRaw, out disconnectTimeout))
{
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(disconnectTimeout);
}
int heartbeatInterval;
if (Int32.TryParse(heartbeatIntervalRaw, out heartbeatInterval))
{
GlobalHost.Configuration.HeartbeatInterval = TimeSpan.FromSeconds(heartbeatInterval);
}
bool enableRejoiningGroups;
if (Boolean.TryParse(enableRejoiningGroupsRaw, out enableRejoiningGroups) &&
enableRejoiningGroups)
{
GlobalHost.HubPipeline.EnableAutoRejoiningGroups();
}
var config = new HubConfiguration
{
EnableCrossDomain = true
};
RouteTable.Routes.MapHubs(config);
RouteTable.Routes.MapHubs("signalr.hubs2", "/signalr2/test", new HubConfiguration());
RouteTable.Routes.MapConnection<MyBadConnection>("errors-are-fun", "ErrorsAreFun");
RouteTable.Routes.MapConnection<MyGroupEchoConnection>("group-echo", "group-echo");
RouteTable.Routes.MapConnection<MySendingConnection>("multisend", "multisend");
RouteTable.Routes.MapConnection<MyReconnect>("my-reconnect", "my-reconnect");
RouteTable.Routes.MapConnection<MyGroupConnection>("groups", "groups");
RouteTable.Routes.MapConnection<MyRejoinGroupsConnection>("rejoin-groups", "rejoin-groups");
RouteTable.Routes.MapConnection<FilteredConnection>("filter", "filter");
RouteTable.Routes.MapConnection<ConnectionThatUsesItems>("items", "items");
RouteTable.Routes.MapConnection<SyncErrorConnection>("sync-error", "sync-error");
RouteTable.Routes.MapConnection<AddGroupOnConnectedConnection>("add-group", "add-group");
RouteTable.Routes.MapConnection<UnusableProtectedConnection>("protected", "protected");
// End point to hit to verify the webserver is up
RouteTable.Routes.Add("test-endpoint", new Route("ping", new TestEndPoint()));
}
}
}