diff --git a/layouts/default.vue b/layouts/default.vue index 5a0a45e..c1d88a9 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -47,7 +47,7 @@ export default { } }, mounted() { - this.$websocket(); + this.$websocket.init(); }, }; diff --git a/plugins/websocket.ts b/plugins/websocket.ts index 913a355..1806323 100644 --- a/plugins/websocket.ts +++ b/plugins/websocket.ts @@ -3,6 +3,8 @@ import { Context } from '@nuxt/types'; import { RepositoryMessage } from './notifications'; +let ws: WebSocket; + function initConnection(context: Context) { const { auth } = context.store.state; @@ -11,6 +13,10 @@ function initConnection(context: Context) { } } +function abortConnection() { + ws.close(); +} + const connectToWebSocket = (context: Context): void => { const { app, @@ -20,7 +26,7 @@ const connectToWebSocket = (context: Context): void => { }, } = context; - const ws = new WebSocket( + ws = new WebSocket( `wss://staging.openwiden.com/websocket/?access_token=${accessToken}` ); @@ -47,5 +53,8 @@ const connectToWebSocket = (context: Context): void => { }; export default (context: Context, inject: any) => { - inject('websocket', () => initConnection(context)); + inject('websocket', { + init: () => initConnection(context), + close: abortConnection, + }); }; diff --git a/store/index.ts b/store/index.ts index 188dcde..ec33639 100644 --- a/store/index.ts +++ b/store/index.ts @@ -69,10 +69,10 @@ export const actions: any = { }, logoutUser({ commit }: any) { + this.$websocket.close(); + removeCookies(['auth', 'refresh', 'provider']); commit(MUTATIONS.RESET_AUTH); - - this.$websocket(); }, loginUser({ commit }: any, { provider }: { provider: string }) { @@ -90,7 +90,7 @@ export const actions: any = { commit(MUTATIONS.SET_AUTH, authToken); commit(MUTATIONS.SET_REFRESH, refreshToken); - this.$websocket(); + this.$websocket.init(); }, async getUser(