import SockJS from 'sockjs-client' import Stomp from 'webstomp-client' import { eventChannel } from 'redux-saga' const wsURL = '/seven-wonders-websocket' export const createWsConnection = (headers = {}) => new Promise((resolve, reject) => { let socket = Stomp.over(new SockJS(wsURL), { debug: process.env.NODE_ENV !== "production" }) socket.connect(headers, (frame) => { return resolve({ frame, socket }) }, reject) }) export const createSubscriptionChannel = (socket, path) => { return eventChannel(emitter => { const receiveUsernameHandler = socket.subscribe(path, event => { emitter(JSON.parse(event.body)) }) return () => receiveUsernameHandler.unsubscribe() }) }