メインコンテンツにスキップ

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 と比較してレイテンシが高くなります。

関連