Свойство 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
Здесь есть какие-нибудь указатели?