2020-09-25 09:44:30 +02:00
|
|
|
/**
|
|
|
|
* Module that manages time syncing with server.
|
2020-11-23 14:27:54 +01:00
|
|
|
* @module components/syncPlay/core/timeSync/TimeSyncServer
|
2020-09-25 09:44:30 +02:00
|
|
|
*/
|
|
|
|
|
2020-11-23 14:27:54 +01:00
|
|
|
import TimeSync from './TimeSync';
|
2020-09-25 09:44:30 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Class that manages time syncing with server.
|
|
|
|
*/
|
|
|
|
class TimeSyncServer extends TimeSync {
|
|
|
|
constructor(syncPlayManager) {
|
|
|
|
super(syncPlayManager);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a ping request to the server.
|
|
|
|
*/
|
|
|
|
requestPing() {
|
|
|
|
const apiClient = this.manager.getApiClient();
|
|
|
|
const requestSent = new Date();
|
|
|
|
let responseReceived;
|
|
|
|
return apiClient.getServerTime().then((response) => {
|
|
|
|
responseReceived = new Date();
|
|
|
|
return response.json();
|
|
|
|
}).then((data) => {
|
|
|
|
const requestReceived = new Date(data.RequestReceptionTime);
|
|
|
|
const responseSent = new Date(data.ResponseTransmissionTime);
|
|
|
|
return Promise.resolve({
|
|
|
|
requestSent: requestSent,
|
|
|
|
requestReceived: requestReceived,
|
|
|
|
responseSent: responseSent,
|
|
|
|
responseReceived: responseReceived
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default TimeSyncServer;
|