UNPKG

react-cosmos

Version:

CLI for running React Cosmos inside webpack-powered apps

42 lines (33 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMessageHandler = createMessageHandler; var _socket = _interopRequireDefault(require("socket.io")); var _build = require("react-cosmos-shared2/build"); var _renderer = require("react-cosmos-shared2/renderer"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function createMessageHandler(httpServer) { var io = (0, _socket.default)(httpServer); io.on('connection', function (socket) { // Forward commands between connected clients. Parties involved can be the // - The Cosmos UI, which acts as a remote control // - The web iframe or the React Native component renderers socket.on(_renderer.RENDERER_MESSAGE_EVENT_NAME, function (msg) { socket.broadcast.emit(_renderer.RENDERER_MESSAGE_EVENT_NAME, msg); }); }); function sendMessage(msg) { io.emit(_build.SERVER_MESSAGE_EVENT_NAME, msg); } function cleanUp() { var sockets = io.sockets.sockets; Object.keys(sockets).forEach(function (id) { sockets[id].disconnect(true); }); } return { sendMessage: sendMessage, cleanUp: cleanUp }; }