From 331cce3633866aaf34b9e441171aa23a8117ce81 Mon Sep 17 00:00:00 2001 From: Stefan Aebischer Date: Sat, 27 Aug 2022 11:33:20 +0200 Subject: [PATCH] fix: ignore case when creating realtime url --- src/SupabaseClient.ts | 2 +- test/client.test.ts | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 57ba4386..e1dbe15f 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -84,7 +84,7 @@ export default class SupabaseClient< const _supabaseUrl = stripTrailingSlash(supabaseUrl) - this.realtimeUrl = `${_supabaseUrl}/realtime/v1`.replace('http', 'ws') + this.realtimeUrl = `${_supabaseUrl}/realtime/v1`.replace(/^http/i, 'ws') this.authUrl = `${_supabaseUrl}/auth/v1` this.storageUrl = `${_supabaseUrl}/storage/v1` diff --git a/test/client.test.ts b/test/client.test.ts index eb38f474..d8f15581 100644 --- a/test/client.test.ts +++ b/test/client.test.ts @@ -28,6 +28,35 @@ describe('Custom Headers', () => { }) }) +describe('Realtime url', () => { + test('should switch protocol from http to ws', () => { + const client = createClient('http://localhost:3000', KEY) + + // @ts-ignore + const realtimeUrl = client.realtimeUrl + + expect(realtimeUrl).toEqual('ws://localhost:3000/realtime/v1') + }) + + test('should switch protocol from https to wss', () => { + const client = createClient('https://localhost:3000', KEY) + + // @ts-ignore + const realtimeUrl = client.realtimeUrl + + expect(realtimeUrl).toEqual('wss://localhost:3000/realtime/v1') + }) + + test('should ignore case', () => { + const client = createClient('HTTP://localhost:3000', KEY) + + // @ts-ignore + const realtimeUrl = client.realtimeUrl + + expect(realtimeUrl).toEqual('ws://localhost:3000/realtime/v1') + }) +}) + // Socket should close when there are no open connections // https://github.com/supabase/supabase-js/issues/44