Socket.IO 接続のレイテンシを確認する方法
ping イベントをサーバに送信し、別の側でそれを認識することで、アプリケーションのレイテンシをテストできます
クライアント
import { io } from "socket.io-client";
const socket = io("wss://example.com");
setInterval(() => {
const start = Date.now();
socket.emit("ping", () => {
const duration = Date.now() - start;
console.log(duration);
});
}, 1000);
サーバ
import { Server } from "socket.io";
const io = new Server(3000);
io.on("connection", (socket) => {
socket.on("ping", (callback) => {
callback();
});
});
レイテンシの大部分は、ネットワークから発生する可能性があり、Socket.IO (下位の WebSocket 接続と同じ程度のオーバヘッドを持つ) 自体によるものではないことに注意してください。
レイテンシは多くの要因により影響を受ける可能性があり、最も重要な要因は明らかにサーバとクライアントの距離です。
その上で、HTTP ロングポーリングで停止しているクライアントは、後者はサーバとクライアント間の TCP 接続を開いたままにし、各リクエストで HTTP ヘッダーを送信する必要がないため、WebSocket と比較してレイテンシが高くなります。
関連