@sevenqi/nodechannel
Version:
nodejs channel
43 lines • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = void 0;
var session_1 = require("./session");
var config_1 = require("./config");
var SessionManager = /** @class */ (function () {
function SessionManager() {
this.sessions = new Map();
}
SessionManager.prototype.add = function (sessionOptions) {
var sessionOption = config_1.Config.getClientOptions(sessionOptions.channelType);
return this.addSession(sessionOption.session, sessionOption.channel, [sessionOptions.channelOptions.options, sessionOptions.channelOptions.filter]);
};
SessionManager.prototype.addSession = function (ctor, channel, channelArgs) {
var session = new ctor(channel, channelArgs);
// session.onClose = this.remove.bind(this)
this.sessions.set(session.id, session);
return session.id;
};
SessionManager.prototype.remove = function (id) {
this.sessions.delete(id);
};
SessionManager.prototype.send = function (id, message) {
this.sessions.get(id).send(message);
};
SessionManager.prototype.onDataAll = function (func) {
this.sessions.forEach(function (session) {
session.onMessage = func;
});
};
SessionManager.prototype.onData = function (id, func) {
this.sessions.get(id).onMessage = func;
};
SessionManager.prototype.connect = function (sessionId) {
if (this.sessions.get(sessionId) && this.sessions.get(sessionId) instanceof session_1.SessionClient)
return this.sessions.get(sessionId).openChannel();
else
throw new Error("SessionServer not support connect");
};
return SessionManager;
}());
exports.SessionManager = SessionManager;
//# sourceMappingURL=sessionManager.js.map