Свойство isAlive недоступно в объекте websocket ws nodejs

Я использую модуль ws для сервера и клиента websocket и беру пример кода со страницы документации.

В моем случае я должен поддерживать соединение между сервером и клиентом с помощью фреймов пинг / понга.

Я использую этот кусок кода на сервере,

const WebSocket = require('ws');

function noop() {}

function heartbeat() {
  this.isAlive = true;
}

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.isAlive = true;
  ws.on('pong', heartbeat);
});

const interval = setInterval(function ping() {
  wss.clients.forEach(function each(ws) {
    if (ws.isAlive === false) return ws.terminate();

    ws.isAlive = false;
    ws.ping(noop);
  });
}, 30000);

и в клиенте,

const WebSocket = require('ws');

function heartbeat() {
  clearTimeout(this.pingTimeout);

  // Use `WebSocket#terminate()` and not `WebSocket#close()`. Delay should be
  // equal to the interval at which your server sends out pings plus a
  // conservative assumption of the latency.
  this.pingTimeout = setTimeout(() => {
    this.terminate();
  }, 30000 + 1000);
}

const client = new WebSocket('wss://echo.websocket.org/');

client.on('open', heartbeat);
client.on('ping', heartbeat);
client.on('close', function clear() {
  clearTimeout(this.pingTimeout);
});

Я не могу получить доступ к свойству isAlive в объекте ws. Также не может получить доступ к this.pingTimeout

Здесь есть какие-нибудь указатели?

0 ответов

Другие вопросы по тегам