Class Client
Singleton that represents a Client connection to a Realtime Server.
It maintains a singular Websocket with asynchronous listeners (RealtimeChannels).
public class Client : IRealtimeClient<RealtimeSocket, RealtimeChannel>, IGettableHeaders- Inheritance
- 
      
      Client
- Implements
- 
      
      IGettableHeaders
- Inherited Members
Examples
client = Client.Instance
Constructors
Client(string, ClientOptions?)
Initializes a Client instance, this method should be called prior to any other method.
public Client(string realtimeUrl, ClientOptions? options = null)Parameters
- realtimeUrlstring
- The connection url (ex: "ws://localhost:4000/socket" - no trailing slash required) 
- optionsClientOptions
Properties
GetHeaders
An executable Func that returns a dictionary of headers to be appended onto a request.
public Func<Dictionary<string, string>>? GetHeaders { get; set; }Property Value
Options
Client Options - most of which are regarding Socket connection Options
public ClientOptions Options { get; }Property Value
SerializerSettings
Custom Serializer resolvers and converters that will be used for encoding and decoding Postgrest JSON responses.
By default, Postgrest seems to use a date format that C# and Newtonsoft do not like, so this initial configuration handles that.
public JsonSerializerSettings SerializerSettings { get; }Property Value
- JsonSerializerSettings
Socket
The backing Socket class.
Most methods of the Client act as proxies to the Socket class.
public IRealtimeSocket? Socket { get; }Property Value
Subscriptions
Exposes all Realtime RealtimeChannel Subscriptions for R/O public consumption
public ReadOnlyDictionary<string, RealtimeChannel> Subscriptions { get; }Property Value
Methods
AddDebugHandler(DebugEventHandler)
Adds a debug handler, likely used within a logging solution of some kind.
public void AddDebugHandler(IRealtimeDebugger.DebugEventHandler handler)Parameters
- handlerIRealtimeDebugger.DebugEventHandler
AddStateChangedHandler(SocketStateEventHandler)
Adds a listener to be notified when the socket state changes.
public void AddStateChangedHandler(IRealtimeClient<RealtimeSocket, RealtimeChannel>.SocketStateEventHandler handler)Parameters
Channel(string)
Adds a RealtimeChannel subscription - if a subscription exists with the same signature, the existing subscription will be returned.
public RealtimeChannel Channel(string channelName)Parameters
- channelNamestring
- The name of the Channel to join (totally arbitrary) 
Returns
Exceptions
Channel(string, string, string, string?, string?, Dictionary<string, string>?)
Adds a RealtimeChannel subscription - if a subscription exists with the same signature, the existing subscription will be returned.
public RealtimeChannel Channel(string database = "realtime", string schema = "public", string table = "*", string? column = null, string? value = null, Dictionary<string, string>? parameters = null)Parameters
- databasestring
- Database to connect to, with Supabase this will likely be - realtime.
- schemastring
- Postgres schema, usually - public
- tablestring
- Postgres table name 
- columnstring
- Postgres column name 
- valuestring
- Value the specified column should have 
- parametersDictionary<string, string>
Returns
ClearDebugHandlers()
Clears debug handlers;
public void ClearDebugHandlers()ClearStateChangedHandlers()
Clears all of the listeners from receiving socket state changes.
public void ClearStateChangedHandlers()Connect(Action<IRealtimeClient<RealtimeSocket, RealtimeChannel>, RealtimeException?>?)
Attempts to connect to the socket.
Provides a callback for Task driven returns.
[Obsolete("Please use ConnectAsync() instead.")]
public IRealtimeClient<RealtimeSocket, RealtimeChannel> Connect(Action<IRealtimeClient<RealtimeSocket, RealtimeChannel>, RealtimeException?>? callback = null)Parameters
- callbackAction<IRealtimeClient<RealtimeSocket, RealtimeChannel>, RealtimeException>
Returns
ConnectAsync()
Attempts to connect to the Socket.
Returns when socket has successfully connected.
public Task<IRealtimeClient<RealtimeSocket, RealtimeChannel>> ConnectAsync()Returns
Disconnect(WebSocketCloseStatus, string)
Disconnects from the socket server (if connected).
public IRealtimeClient<RealtimeSocket, RealtimeChannel> Disconnect(WebSocketCloseStatus code = WebSocketCloseStatus.NormalClosure, string reason = "Programmatic Disconnect")Parameters
- codeWebSocketCloseStatus
- Status Code 
- reasonstring
- Reason for disconnect 
Returns
Remove(RealtimeChannel)
Removes a channel subscription.
public void Remove(RealtimeChannel channel)Parameters
- channelRealtimeChannel
RemoveDebugHandler(DebugEventHandler)
Removes a debug handler
public void RemoveDebugHandler(IRealtimeDebugger.DebugEventHandler handler)Parameters
- handlerIRealtimeDebugger.DebugEventHandler
RemoveStateChangedHandler(SocketStateEventHandler)
Removes a specified listener from socket state changes.
public void RemoveStateChangedHandler(IRealtimeClient<RealtimeSocket, RealtimeChannel>.SocketStateEventHandler handler)Parameters
SetAuth(string)
Sets the JWT access token used for channel subscription authorization and Realtime RLS. Ref: https://github.com/supabase/realtime-js/pull/117 | https://github.com/supabase/realtime-js/pull/117
public void SetAuth(string jwt)Parameters
- jwtstring