Fixed socket connection handling.

master
Håvar Aambø Fosstveit 2019-11-01 14:50:40 +01:00
parent 5d1a38d978
commit 8bfdcab709
1 changed files with 45 additions and 26 deletions

View File

@ -330,7 +330,8 @@ export default class RoomClient
{ {
text : 'You are logged in.' text : 'You are logged in.'
})); }));
if ( store.getState().room.state !== 'new' ) // no socket yet
if (store.getState().room.state !== 'new') // no socket yet
{ {
this.changeDisplayName(displayName); this.changeDisplayName(displayName);
this.changePicture(picture); this.changePicture(picture);
@ -1142,41 +1143,59 @@ export default class RoomClient
logger.debug('signaling Peer "connect" event'); logger.debug('signaling Peer "connect" event');
}); });
this._signalingSocket.on('disconnect', () => this._signalingSocket.on('disconnect', (reason) =>
{ {
logger.warn('signaling Peer "disconnect" event'); logger.warn('signaling Peer "disconnect" event [reason:"%s"]', reason);
if (this._closed)
return;
if (reason === 'io server disconnect')
{
store.dispatch(requestActions.notify(
{
text : 'You are disconnected.'
}));
store.dispatch(stateActions.setRoomState('closed'));
this.close();
}
store.dispatch(requestActions.notify(
{
text : 'You are disconnected, attempting to reconnect.'
}));
store.dispatch(stateActions.setRoomState('connecting'));
});
this._signalingSocket.on('reconnect_failed', () =>
{
logger.warn('signaling Peer "reconnect_failed" event');
store.dispatch(requestActions.notify( store.dispatch(requestActions.notify(
{ {
text : 'You are disconnected.' text : 'You are disconnected.'
})); }));
// Close mediasoup Transports.
if (this._sendTransport)
{
this._sendTransport.close();
this._sendTransport = null;
}
if (this._recvTransport)
{
this._recvTransport.close();
this._recvTransport = null;
}
store.dispatch(stateActions.setRoomState('closed')); store.dispatch(stateActions.setRoomState('closed'));
});
this._signalingSocket.on('close', () =>
{
if (this._closed)
return;
logger.warn('signaling Peer "close" event');
this.close(); this.close();
}); });
this._signalingSocket.on('reconnect', (attemptNumber) =>
{
logger.debug('signaling Peer "reconnect" event [attempts:"%s"]', attemptNumber);
store.dispatch(requestActions.notify(
{
text : 'You are reconnected.'
}));
store.dispatch(stateActions.setRoomState('connected'));
});
this._signalingSocket.on('request', async (request, cb) => this._signalingSocket.on('request', async (request, cb) =>
{ {
logger.debug( logger.debug(
@ -1320,7 +1339,7 @@ export default class RoomClient
const { picture } = store.getState().me; const { picture } = store.getState().me;
await this.sendRequest('changeDisplayName', { displayName }); await this.sendRequest('changeDisplayName', { displayName });
await this.sendRequest('changePicture', { picture }) await this.sendRequest('changePicture', { picture });
break; break;
} }
@ -1431,7 +1450,7 @@ export default class RoomClient
store.dispatch(requestActions.notify( store.dispatch(requestActions.notify(
{ {
text : `Participant in lobby changed picture.` text : 'Participant in lobby changed picture.'
})); }));
break; break;