40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
![]() |
/**
|
||
|
* Module that manages time syncing with server.
|
||
|
* @module components/syncPlay/core/timeSync/server
|
||
|
*/
|
||
|
|
||
|
import TimeSync from './timeSync';
|
||
|
|
||
|
/**
|
||
|
* 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;
|