Integrate trusted .NET backends with Seuraa Edge.
.NET Server SDK
Use the .NET server SDK in trusted backend code to issue channel tokens, publish events, query presence, and revoke tokens.
Create A Client
using Seuraa.Edge;
using var edge = new EdgeServerClient(new EdgeServerClientOptions
{
AppKey = builder.Configuration["Seuraa:AppKey"]!,
AppSecret = builder.Configuration["Seuraa:AppSecret"]!,
});Keep AppSecret in backend configuration. Never expose it to browser or mobile clients.
Issue A Channel Token
The backend authenticates the user and decides which channel permissions to grant:
app.MapPost("/api/edge/token", (
TokenRequest request,
ClaimsPrincipal principal) =>
{
var userId = principal.FindFirstValue(ClaimTypes.NameIdentifier)
?? throw new UnauthorizedAccessException();
if (request.Channel != $"private:{userId}")
{
return Results.Forbid();
}
var session = edge.Auth.SignIn(new EdgeSignInRequest
{
Channel = request.Channel,
ExpiresInSeconds = 60,
Permissions = ["subscribe"],
UserId = userId,
});
return Results.Ok(new
{
token = session.Token,
tokenId = session.TokenId,
expiresAt = session.ExpiresAt,
});
});Store TokenId when a session may need to be revoked before expiry.
Publish An Event
await edge.Channels.PublishAsync(
"private:user-123",
"notification.created",
new { title = "Your report is ready" });Provide a stable client event ID when retrying the same operation:
await edge.Channels.PublishAsync(
"private:user-123",
"notification.created",
new { title = "Your report is ready" },
new PublishOptions { ClientEventId = "notification-456" });Presence
var presence = await edge.Channels.PresenceAsync(
"presence:document-123");
Console.WriteLine(presence.Count);Presence member identifiers come from the UserId claim:
var session = edge.Auth.SignIn(new EdgeSignInRequest
{
Channel = "presence:document-123",
Permissions = ["subscribe"],
UserId = "user-123",
});Presence responses contain member IDs only.
Revoke A Token
await edge.Auth.RevokeAsync(
session.TokenId,
new RevokeTokenOptions { TtlSeconds = 3600 });Set the revocation TTL to cover the token's remaining lifetime.
Errors
Failed Edge requests throw EdgeServerException. It exposes the HTTP StatusCode and raw ResponseBody for application logging and error mapping.