I had some issues getting a reliable connection up. Made this after a lot of experimentation and it now works well.
Includes how to keep the connection alive when the document is not visible, handles reconnecting on errors, and also fixes certain authentication issues when coming back to a document that has not been visible while the token expired.
To use it, you pass in a factory function for your RealtimeChannel. Do not call .subscribe()
on the channel, the handler will do this for you. See example.
PS: If you're not using supabase-js you'll need to change stuff a bit. Instead of passing in SupabaseClient
switch it to use RealtimeClient
, and update the refreshSessionIfNeeded
method to your authentication implementation.
If you see any problems or have suggestions for improvements, please leave a comment.