Как отследить время между входящими сообщениями с сокет-сервера? - PullRequest
0 голосов
/ 05 ноября 2019

Я создал клиента websocket (wss) для прослушивания сообщений с сокет-сервера. Сообщения отправляются непрерывно с сервера, который зарегистрирован на стороне клиента консоли. Я хотел бы измерить время между этими сообщениями (я знаю, что они появляются каждые 5 секунд, но мне нужно рассчитать время, потому что эти 5 секунд не гарантированы).

Я думал о том, чтобы сохранить время предыдущего сообщения с помощью Date.now () и затем найти время самых последних сообщений, чтобы вычислить разницу во времени, но я не уверен, как это сделать.

socket.onmessage = (event) => {
    if (event.data.substr(4, 9) === 'heartbeat') {
        console.log(event.data.substr(2))  // logs msg to console
        timeHeartbeats(event.data.substr(2), Date.now())
    }
}

// I'm not actually keeping track of the time for 2 messages which is the issue
const timeHeartbeats = (json, mostRecent) => {
    console.log(Date.now() - mostRecent)   // 0 b/c Date.now() is the same as mostRecent (should be ~5000ms if time calc is correct)
}

1 Ответ

0 голосов
/ 05 ноября 2019

Время с момента последнего сердцебиения:

    socket.onmessage = (event) => {
      if (event.data.substr(4, 9) === 'heartbeat') {
        console.log(event.data.substr(2))  // logs msg to console
        timeFromNow(event.data.substr(2))
      }
    }

    // I'm not actually keeping track of the time for 2 messages which is the issue
    const timeHeartbeats = (mostRecent) => (json) => {
      const now = Date.now();
      console.log((now - mostRecent) + ' since last heartbeat');
      mostRecent = now;
    }

    const timeFromNow = timeHeartbeats(Date.now());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...