This commit is contained in:
syuilo 2018-10-11 22:17:27 +09:00
parent a04f0e3545
commit 5df0e102fd
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69

View file

@ -46,6 +46,11 @@ export default class Stream extends EventEmitter {
this.sharedConnections = this.sharedConnections.filter(c => c !== connection);
}
@autobind
public removeSharedConnectionPool(pool: Pool) {
this.sharedConnectionPools = this.sharedConnectionPools.filter(p => p !== pool);
}
@autobind
public connectToChannel(channel: string, params?: any): NonSharedConnection {
const connection = new NonSharedConnection(this, channel, params);
@ -71,9 +76,7 @@ export default class Stream extends EventEmitter {
// チャンネル再接続
if (isReconnect) {
this.sharedConnectionPools.forEach(p => {
if (p.users > 0) {
p.connect();
}
});
this.nonSharedConnections.forEach(c => {
c.connect();
@ -152,6 +155,13 @@ class Pool {
this.stream = stream;
this.id = Math.random().toString();
this.stream.on('_disconnected_', this.onStreamDisconnected);
}
@autobind
private onStreamDisconnected() {
this.isConnected = false;
}
@autobind
@ -185,6 +195,7 @@ class Pool {
@autobind
public connect() {
if (this.isConnected) return;
this.isConnected = true;
this.stream.send('connect', {
channel: this.channel,
@ -194,9 +205,9 @@ class Pool {
@autobind
private disconnect() {
this.isConnected = false;
this.disposeTimerId = null;
this.stream.off('_disconnected_', this.onStreamDisconnected);
this.stream.send('disconnect', { id: this.id });
this.stream.removeSharedConnectionPool(this);
}
}