eventChannel(emitter => { //this code is synchronously called so not toooo bad middleware = function(req, res, next){ emitter({req, res, next}); }; return () => { console.error("unsubscribe...") } })
function subscribe(socketClient, action) { return eventChannel((emitter) => { socketClient.on("connected", () => { const { botId } = action; // console.log(`WebSocket connected: ${botId}`); const payload = JSON.stringify({ event: "subscribe", channelId: botId }); socketClient.send(payload); }); socketClient.on("newMessages", (data) => { // console.log(`WebSocket newMessages: ${data}`); emitter({ type: `${API_SB_GETMESSAGES}${FETCH_SUCCESS}`, loading: false, conversations: data, }); }); socketClient.on("error", (/* error */) => { // TODO: handle error // console.log(`WebSocket error: ${error}`); }); socketClient.on("close", () => { // TODO: handle close // console.log("WebSocket close"); }); return () => { // console.log("WebSocket off"); }; }); }
emitter({loadStart: true}); }; const onProgress = (event) => { if (event.lengthComputable) { const percentage = Math.round((event.loaded * 100) / event.total); emitter({progress: percentage}); emitter({load: true}); }; xhr.upload.addEventListener('loadstart', onLoadStart); switch (xhr.status) { case 413: emitter({error: new Error("Unfortunately it appears this web server " + "has been misconfigured, please inform the service administrators " + "that they must set their nginx/apache request size maximums higher " + "than their file size limits.")}); emitter(END); break; case 200: var response = JSON.parse(xhr.response); if (response.success) { emitter({success: response}); emitter(END); } else { emitter({error: new Error(response.message)}); emitter(END); emitter({error: new Error("Received an unexpected response from " +