diff options
Diffstat (limited to 'frontend/src/utils/websocket.js')
-rw-r--r-- | frontend/src/utils/websocket.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/frontend/src/utils/websocket.js b/frontend/src/utils/websocket.js new file mode 100644 index 00000000..1dde5397 --- /dev/null +++ b/frontend/src/utils/websocket.js @@ -0,0 +1,23 @@ +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() + }) +} |