This commit is contained in:
syuilo 2017-11-17 21:14:03 +09:00
parent 842b5e878f
commit 3ca3cd8d65
1 changed files with 14 additions and 3 deletions

View File

@ -9,6 +9,8 @@ import Connection from './stream';
export default abstract class StreamManager<T extends Connection> extends EventEmitter { export default abstract class StreamManager<T extends Connection> extends EventEmitter {
private _connection: T = null; private _connection: T = null;
private disposeTimerId: any;
/** /**
* *
*/ */
@ -51,6 +53,12 @@ export default abstract class StreamManager<T extends Connection> extends EventE
* IDを発行します * IDを発行します
*/ */
public use() { public use() {
// タイマー解除
if (this.disposeTimerId) {
clearTimeout(this.disposeTimerId);
this.disposeTimerId = null;
}
// ユーザーID生成 // ユーザーID生成
const userId = uuid(); const userId = uuid();
@ -68,9 +76,12 @@ export default abstract class StreamManager<T extends Connection> extends EventE
// 誰もコネクションの利用者がいなくなったら // 誰もコネクションの利用者がいなくなったら
if (this.users.length == 0) { if (this.users.length == 0) {
// コネクションを切断する // また直ぐに再利用される可能性があるので、一定時間待ち、
// 新たな利用者が現れなければコネクションを切断する
this.disposeTimerId = setTimeout(() => {
this.connection.close(); this.connection.close();
this.connection = null; this.connection = null;
}, 3000);
} }
} }
} }