Ich arbeite an einem CCXT -basierten App -Server auf dem Knoten.
Ich möchte die Latenz von WebSocket -Verbindungen zwischen Knoten und Remote -Austausch messen. Zu diesem Zweck möchte ich ein Ping direkt nach dem Websocket -Stream -Abonnement einleiten und es dann regelmäßig gemäß den "Keepalive" -Instellungen wiederholen. Nach Erhalt eines Antwortpongs kann ich die Roundtrip -Zeit berechnen.
Code: Select all
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 ...}
}
Aber ich kann nicht herausfinden, wie man Ping s sendet. Die folgenden Versuche erzeugen keinen Effekt: < /p>
Code: Select all
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
}
}
}
Ich fasse die Pong s ab, aber sie sehen nach dem vordefinierten Intervall nach dem eigenen Zeitplan des Servers an. Mit anderen Worten, meine Ping werden entweder überhaupt nicht gesendet oder aus irgendeinem Grund lautlos ignoriert - es gibt keine Ausnahmen. Ping s (erzwingen>