sse.ts 698 B

1234567891011121314151617181920212223
  1. import {Plugin} from "@nuxt/types";
  2. import SseSource from "~/services/sse/sseSource";
  3. /**
  4. * Setup SSE EventSource, allowing the app to listen for Mercure updates
  5. * /!\ This has to be executed client side
  6. *
  7. * @param ctx
  8. */
  9. const ssePlugin: Plugin = ({ $config, store }) => {
  10. const sseSource = new SseSource(
  11. $config.baseUrl_mercure,
  12. "access/" + store.state.profile.access.id,
  13. () => { store.commit('sse/setConnected', true) },
  14. (eventData) => { store.commit('sse/addEvent', eventData) },
  15. () => { store.commit('sse/setConnected', false) },
  16. )
  17. sseSource.subscribe()
  18. window.addEventListener('beforeunload', () => { sseSource.unsubscribe() })
  19. }
  20. export default ssePlugin