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
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
|