Я работаю над сервером приложений на основе CCXT на узле. Я хочу измерить задержку соединения WebSocket между узлами и удаленными обменами. Для этого я хотел бы инициировать подписку Ping сразу после подписки Websocket Stream, а затем периодически повторять ее в соответствии с настройками «Keepalive». После получения ответа pong я мог рассчитать время обработки.
Код: Выделить всё
ex = new Exchange();
if(ex.handlePong)
{
const original_handler = ex.handlePong.bind(ex);
ex.handlePong = (ws, data) => { original_handler(ws, data); console.log("Pong at ", Date.now(), "after", ex.myPing); ... actual stuff here ...}
}
Но я не могу понять, как отправить ping s. Следующие попытки не дают никакого эффекта: < /p>
Код: Выделить всё
if(!ex.myPing || Date.now() - ex.lastPong > 30000)
{
ex.myPing = Date.now();
for(const key in ex.clients)
{
if(key.startsWith("ws"))
{
ex.clients[key].connection.ping(); // ?data, mask, cb?
// ex.clients[key].ping(); // doesn't seem to do anything
}
}
}
Я перехватываю pong s, но они выглядят как по сравнению с собственным графиком сервера после предварительно определенного интервала. Другими словами, мой ping s либо вообще не отправляется вообще, либо не игнорируется по какой -то причине, молча - нет никаких исключений. Ping s (заставьте удаленный сервер, чтобы ответить с помощью pong s) или измерить задержку WebSocket по -другому?
Подробнее здесь:
https://stackoverflow.com/questions/794 ... under-node