redux-simple-websocket
Version:
Simple websocket middleware for ReactJS
1 lines • 3.26 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["shared-components"]=t():e["shared-components"]=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=t.ActionTypes={WEBSOCKET_CONNECTED:"@@redux-simple-websocket/WEBSOCKET_CONNECTED",WEBSOCKET_DISCONNECTED:"@@redux-simple-websocket/WEBSOCKET_DISCONNECTED",WEBSOCKET_ERROR:"@@redux-simple-websocket/WEBSOCKET_ERROR",SEND_DATA_TO_WEBSOCKET:"@@redux-simple-websocket/SEND_DATA_TO_WEBSOCKET",CLOSE_WEBSOCKET:"@@redux-simple-websocket/CLOSE_WEBSOCKET",CONNECT_WEBSOCKET:"@@redux-simple-websocket/CONNECT_WEBSOCKET",RECEIVED_WEBSOCKET_DATA:"@@redux-simple-webSocket/RECEIVED_WEBSOCKET_DATA"},r=[];for(var c in o)r.push(o[c]);var i=t.connectWebSocketAction=function(e){return{type:o.CONNECT_WEBSOCKET,endpoint:e}},E=t.sendDataToWebSocketAction=function(e,t){return{type:o.SEND_DATA_TO_WEBSOCKET,payload:t,endpoint:e}},u=t.closeWebSocketAction=function(e){return{type:o.CLOSE_WEBSOCKET,endpoint:e}},p=function(e){return{type:o.WEBSOCKET_CONNECTED,endpoint:e}},d=function(e){return{type:o.WEBSOCKET_DISCONNECTED,endpoint:e}},s=function(e,t){return{type:o.WEBSOCKET_ERROR,error:new Error(t),endpoint:e}},a=function(e,t){return{type:o.RECEIVED_WEBSOCKET_DATA,endpoint:e,payload:t}},f=function(){var e={};return function(t){function n(n){var o=new WebSocket(n);return o.onopen=function(e){var o=i(n);o.connected=!0,t.dispatch(p(n));var r=o.queue;o.queue=[],r.length>0&&r.map(function(e){t.dispatch(E(n,e))})},o.onerror=function(o){delete e[n],t.dispatch(s(n,o))},o.onmessage=function(e){var o=e.data;try{o=JSON.parse(o)}catch(e){}t.dispatch(a(n,o))},o.onclose=function(){delete e[n],t.dispatch(d(n))},o}function c(o){if(e[o])return void t.dispatch(s(o,"WebSocket for endpoint '"+o+"' already created"));try{var r=n(o)}catch(e){return void t.dispatch(s(o,e))}var c={endpoint:o,websocket:r,connected:!1,queue:[]};return e[o]=c,c}function i(t){return e[t]?e[t]:c(t)}function u(e){return r.indexOf(e.type)>-1}function f(t){return!!e[t]}return function(e){return function(t){if(!u(t))return e(t);var n=t.endpoint;if("string"!=typeof n||0!=n.indexOf("ws"))e(s(n,"Endpoint invalid"));else{if(t.type==o.CLOSE_WEBSOCKET)return void(f(n)&&i(n).websocket.close());var r=!0;if([o.SEND_DATA_TO_WEBSOCKET,o.CONNECT_WEBSOCKET].indexOf(t.type)>-1){var c=i(t.endpoint);c&&o.SEND_DATA_TO_WEBSOCKET==t.type&&(c.connected?c.websocket.send(JSON.stringify(t.payload)):(c.queue.push(t.payload),r=!1))}r&&e(t)}}}}},O={createSimpleWebSocketMiddleware:f,ActionTypes:o,connectWebSocketAction:i,closeWebSocketAction:u,sendDataToWebSocketAction:E};t.default=O,e.exports=O}])});