TurboOptions Class
Configuration options for Tombatron.Turbo.
Namespace
Tombatron.Turbo
Usage
Configure options in Program.cs:
builder.Services.AddTurbo(options =>
{
options.HubPath = "/my-turbo-hub";
options.UseSignedStreamNames = true;
options.AddVaryHeader = true;
});
Properties
HubPath
Gets or sets the path for the SignalR hub endpoint.
- Type:
string - Default:
"/turbo-hub"
options.HubPath = "/realtime";
Note: Must start with a forward slash (
/).
UseSignedStreamNames
Gets or sets whether to use signed stream names for subscription security.
- Type:
bool - Default:
true
When enabled, clients can only subscribe to streams that have been cryptographically signed by the server. This uses ASP.NET Core's Data Protection API.
options.UseSignedStreamNames = true;
Security Model: If the server rendered the stream subscription tag, the client is implicitly authorized to subscribe. This provides security without requiring authentication.
SignedStreamNameExpiration
Gets or sets the expiration time for signed stream name tokens.
- Type:
TimeSpan? - Default:
TimeSpan.FromHours(24)
After this duration, clients will need to refresh the page to get new tokens. Set to null for no expiration.
options.SignedStreamNameExpiration = TimeSpan.FromHours(8);
AddVaryHeader
Gets or sets whether to automatically add the Vary: Turbo-Frame header to responses.
- Type:
bool - Default:
true
This header tells caches that responses vary based on the Turbo-Frame request header, preventing incorrect cached responses.
options.AddVaryHeader = true;
DefaultUserStreamPattern
Gets or sets the default stream name pattern for authenticated users.
- Type:
string - Default:
"user:{0}"
Use {0} as a placeholder for the user identifier.
options.DefaultUserStreamPattern = "account:{0}";
DefaultSessionStreamPattern
Gets or sets the default stream name pattern for anonymous sessions.
- Type:
string - Default:
"session:{0}"
Use {0} as a placeholder for the session ID.
options.DefaultSessionStreamPattern = "visitor:{0}";
EnableAutoReconnect
Gets or sets whether to enable automatic reconnection for SignalR clients.
- Type:
bool - Default:
true
options.EnableAutoReconnect = true;
MaxReconnectAttempts
Gets or sets the maximum number of reconnection attempts before giving up.
- Type:
int - Default:
5
options.MaxReconnectAttempts = 10;
Validation
The Validate() method is called automatically during service registration and throws InvalidOperationException if:
HubPathis null, empty, or doesn't start with/DefaultUserStreamPatternis null or emptyDefaultSessionStreamPatternis null or emptyMaxReconnectAttemptsis negative
Example Configuration
builder.Services.AddTurbo(options =>
{
// Custom hub path
options.HubPath = "/turbo";
// Enable signed stream names with 8-hour expiration
options.UseSignedStreamNames = true;
options.SignedStreamNameExpiration = TimeSpan.FromHours(8);
// Custom stream patterns
options.DefaultUserStreamPattern = "user:{0}:updates";
options.DefaultSessionStreamPattern = "guest:{0}";
// Reconnection settings
options.EnableAutoReconnect = true;
options.MaxReconnectAttempts = 10;
});
See Also
- ITurbo - Main service interface
- Authorization Guide - Stream security