react-cosmos
Version:
CLI for running React Cosmos inside webpack-powered apps
42 lines (33 loc) • 1.21 kB
JavaScript
;
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
};
}