Subtheme of barrio
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

72 lines
2.3 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = exports.plugin = void 0;
const socket_io_1 = require("socket.io");
const utils = require("./server/utils");
/**
* Plugin interface
* @returns {*|function(this:exports)}
*/
function plugin(server, clientEvents, bs) {
return exports.init(server, clientEvents, bs);
}
exports.plugin = plugin;
/**
* @param {http.Server} server
* @param clientEvents
* @param {BrowserSync} bs
*/
function init(server, clientEvents, bs) {
var emitter = bs.events;
var socketConfig = bs.options.get("socket").toJS();
if (bs.options.get("mode") === "proxy" &&
bs.options.getIn(["proxy", "ws"])) {
server = utils.getServer(null, bs.options).server;
server.listen(bs.options.getIn(["socket", "port"]));
bs.registerCleanupTask(function () {
server.close();
});
}
var socketIoConfig = socketConfig.socketIoOptions;
socketIoConfig.path = socketConfig.path;
const io = new socket_io_1.Server();
io.attach(server, Object.assign(Object.assign({}, socketIoConfig), { pingTimeout: socketConfig.clients.heartbeatTimeout, cors: {
credentials: true,
"origin": (origin, cb) => {
return cb(null, origin);
},
} }));
io.of(socketConfig.namespace).on('connection', (socket) => {
handleConnection(socket);
});
/**
* Handle each new connection
* @param {Object} client
*/
function handleConnection(client) {
// set ghostmode callbacks
if (bs.options.get("ghostMode")) {
addGhostMode(client);
}
client.emit("connection", bs.options.toJS()); //todo - trim the amount of options sent to clients
emitter.emit("client:connected", {
ua: client.handshake.headers["user-agent"]
});
}
/**
* @param client
*/
function addGhostMode(client) {
clientEvents.forEach(addEvent);
function addEvent(event) {
client.on(event, data => {
client.broadcast.emit(event, data);
});
}
}
// @ts-ignore
io.sockets = io.of(socketConfig.namespace);
return io;
}
exports.init = init;
//# sourceMappingURL=sockets.js.map