Пинг клиента JS WebSocket - Vue - PullRequest
0 голосов
/ 08 декабря 2018

Попытка реализовать какой-нибудь клиентский пинг:

socket.onopen = () => {
  let pinger = new Promise((resolve, reject) => {
    setInterval(() => {
      socket.send(JSON.stringify({ "type": "ping" }))
      socket.onmessage = ({ data }) => {
        let jsonMessage = JSON.parse(data)
        if (jsonMessage.type == 'PING') {
          resolve()
        } else if (jsonMessage.type !== 'PING') {
          reject()
        }
      }
    }, 10000)
  })
  pinger.then(() => console.log('resolved')).catch(() => console.log('error'))
}

Столкнулся с проблемой здесь, как бы он узнал, если socket.send() успешно или нет?Идея заключается в том, что если я отправляю объект JSON и не получаю ответа от сервера, то запускаю метод connect(), если ответ возвращается, тогда я ничего не буду делать.

Обновил код, теперьошибка появляется в консоли только один раз, хотя она должна появляться каждые 10 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...