kea-socket.io
Version:
Socket.io binding for Kea store
92 lines (76 loc) • 3.54 kB
JavaScript
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 };