UNPKG

kea-socket.io

Version:
92 lines (76 loc) 3.54 kB
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } import { getPluginContext, setPluginContext } from 'kea'; import io from 'socket.io-client'; import { isSocketIo, wildcardMiddleware } from './utils'; import { observe, addSystemObserve } from './observe'; export var patchSocket = wildcardMiddleware(io.Manager); var emitterActions = Object.freeze({ removeEmitterByNameSpace: function removeEmitterByNameSpace(_ref) { var name = _ref.name, _ref$options = _ref.options, options = _ref$options === undefined ? {} : _ref$options; var _getPluginContext = getPluginContext('kea-socket.io'), _getPluginContext$emi = _getPluginContext.emitters, emitters = _getPluginContext$emi === undefined ? {} : _getPluginContext$emi, rest = _objectWithoutProperties(_getPluginContext, ['emitters']); var deletedEmitter = emitters[name], newEmitters = _objectWithoutProperties(emitters, [name]); var _options$stopEmitter = options.stopEmitter, stopEmitter = _options$stopEmitter === undefined ? true : _options$stopEmitter; if (stopEmitter) { if (deletedEmitter && deletedEmitter.connected) { deletedEmitter.close(); } } setPluginContext('kea-socket.io', _extends({}, rest, { emitters: newEmitters })); }, addNewEmitter: function addNewEmitter(_ref2) { var socket = _ref2.socket; var _getPluginContext2 = getPluginContext('kea-socket.io'), _getPluginContext2$em = _getPluginContext2.emitters, emitters = _getPluginContext2$em === undefined ? {} : _getPluginContext2$em, rest = _objectWithoutProperties(_getPluginContext2, ['emitters']); var newEmitters = _extends({}, emitters); patchSocket(socket); addSystemObserve(socket); socket.on('*', function () { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, data = _ref3.data; var type = data[0], payload = data[1]; observe({ type: type, payload: payload, socket: socket }); }); newEmitters[socket.nsp.substr(1) || 'default'] = socket; setPluginContext('kea-socket.io', _extends({}, rest, { emitters: newEmitters })); }, disconnectAll: function disconnectAll() { var _getPluginContext3 = getPluginContext('kea-socket.io'), emitters = _getPluginContext3.emitters; for (var name in emitters) { if (emitters.hasOwnProperty(name)) { var socket = emitters[name]; if (isSocketIo(socket) && socket.io.readyState === 'open') socket.disconnect(); } } }, reconnectAll: function reconnectAll() { var _getPluginContext4 = getPluginContext('kea-socket.io'), emitters = _getPluginContext4.emitters; for (var name in emitters) { if (emitters.hasOwnProperty(name)) { var socket = emitters[name]; if (isSocketIo(socket) && socket.io.readyState !== 'open') { socket.io.reconnecting = undefined; socket.io._reconnection = true; socket.connect(); } } } } }); export { emitterActions };