UNPKG

cyclejs-socket.io

Version:
83 lines (70 loc) 2.42 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeSocketIODriver = makeSocketIODriver; var _xstream = require('xstream'); var _xstream2 = _interopRequireDefault(_xstream); var _socket = require('socket.io-client'); var _socket2 = _interopRequireDefault(_socket); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * * @param options { hostname: 'securedomain.com', secure: true, port: 443, rejectUnauthorized: false // Only necessary during debug if using a self-signed certificate } * @returns {scDriver} */ function makeSocketIODriver(url, options) { var socket = (0, _socket2.default)(url, options); function get(eventName) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref$multiArgs = _ref.multiArgs, multiArgs = _ref$multiArgs === undefined ? false : _ref$multiArgs; return _xstream2.default.create({ start: function start(listener) { this.eventListener = multiArgs ? function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return listener.next(args); } : function (arg) { return listener.next(arg); }; socket.on(eventName, this.eventListener); }, stop: function stop() { socket.off(eventName, this.eventListener); }, eventListener: null }); } function publish(messageType, message) { socket.emit(messageType, message); } return function sioDriver(events$) { if (events$) { events$.addListener({ next: function next(i) { if (!!i) { publish(i.messageType, i.message); } }, error: function error(err) { return console.error(err); }, complete: function complete() { socket.disconnect(); } }); } return { get: get, socket: socket, dispose: function dispose() {} }; }; }