public void StreamingDisablesLongPollingTransport() { var options = new SignalROptions(); options.Transports.EnabledTransports = TransportType.Streaming; Assert.False(options.Transports.EnabledTransports.HasFlag(TransportType.LongPolling)); Assert.True(options.Transports.EnabledTransports.HasFlag(TransportType.ForeverFrame)); Assert.True(options.Transports.EnabledTransports.HasFlag(TransportType.ServerSentEvents)); Assert.True(options.Transports.EnabledTransports.HasFlag(TransportType.WebSockets)); }
public void TestSignalROptionsFormat() { var options = new SignalROptions() { JsonObjectSerializer = new JsonObjectSerializer(), ServiceTransportType = ServiceTransportType.Persistent }; options.ServiceEndpoints.Add(new ServiceEndpoint(FakeEndpointUtils.GetFakeConnectionString())); options.ServiceEndpoints.Add(new ServiceEndpoint(new Uri("https://mysignalr.com"), new DefaultAzureCredential(), EndpointType.Secondary, "backup")); _outputHelper.WriteLine((options as IOptionsFormatter).Format()); }
public AuthService(IOptions <AuthOptions> options , IOptions <SignalROptions> iSignalROptions) { var authOptions = options.Value; signingKey = new SymmetricSecurityKey(Convert.FromBase64String(authOptions.SigningKey)); issuer = authOptions.Issuer; audience = authOptions.Audience; jwtTokenHandler = new JwtSecurityTokenHandler(); signingCreds = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256); signalROptions = iSignalROptions.Value; signalRServiceUtils = new SignalRServiceUtils(signalROptions.ConnectionString); }
public static void AddMyApi(this IServiceCollection services, SignalROptions signalROptions) { if (signalROptions.Enabled) { services.AddSingletonAs <NotificationHubAccessor>() .As <IStreamClient>(); } else { services.AddSingletonAs <NoopStreamClient>() .As <IStreamClient>(); } services.AddSingletonAs <UrlBuilder>() .As <IEmailUrl>().As <IMessagingUrl>().As <ISmsUrl>().As <IUserNotificationUrl>(); }
internal static bool TryRejectJSONPRequest(SignalROptions options, HttpContext context) { // If JSONP is enabled then do nothing if (options.EnableJSONP) { return(false); } string callback = context.Request.Query.Get("callback"); // The request isn't a JSONP request so do nothing if (String.IsNullOrEmpty(callback)) { return(false); } // Disable the JSONP request with a 403 context.Response.StatusCode = 403; // TODO //context.Response.ReasonPhrase = Resources.Forbidden_JSONPDisabled; return(true); }
public static void AddMyClustering(this IServiceCollection services, IConfiguration config, SignalROptions signalROptions) { config.ConfigureByOption("clustering:type", new Alternatives { ["Redis"] = () => { var connection = new RedisConnection(config.GetRequiredValue("clustering:redis:connectionString")); if (signalROptions.Enabled) { services.AddSignalR() .AddStackExchangeRedis(options => { options.ConnectionFactory = connection.ConnectAsync; }); } services.AddRedisPubSub(options => { options.ConnectionFactory = connection.ConnectAsync; }); }, ["None"] = () => { // NOOP } }); }
public SignalRCollectorBuilder(SignalROptions options) { this.options = options; }
public void JavascriptProviesOnByDefault() { var options = new SignalROptions(); Assert.True(options.Hubs.EnableJavaScriptProxies); }
public void AllTransportEnabledByDefault() { var options = new SignalROptions(); Assert.Equal(TransportType.All, options.Transports.EnabledTransports); }
public static IServiceCollection AddSignalRWebNotification <T>(this IServiceCollection services, SignalROptions options) { services.AddSingleton <IWebNotification <T> >(new SignalRNotification <T>(options.Endpoint, options.Hubs[typeof(T).Name], options.MethodNames[typeof(T).Name])); return(services); }
internal static bool TryRejectJSONPRequest(SignalROptions options, HttpContext context) { // If JSONP is enabled then do nothing if (options.EnableJSONP) { return false; } string callback = context.Request.Query["callback"]; // The request isn't a JSONP request so do nothing if (String.IsNullOrEmpty(callback)) { return false; } // Disable the JSONP request with a 403 context.Response.StatusCode = 403; // TODO //context.Response.ReasonPhrase = Resources.Forbidden_JSONPDisabled; return true; }
public WebController(IUserNotificationStore userNotificationStore, IOptions <SignalROptions> signalROptions) { this.userNotificationStore = userNotificationStore; this.signalROptions = signalROptions.Value; }
public void TestDefaultSignalROptionsFormat() { var options = new SignalROptions(); _outputHelper.WriteLine((options as IOptionsFormatter).Format()); }