跳至主要內容

如何檢查 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 長輪詢的用戶端會比 WebSocket 產生更高的延遲時間,因為後者會在伺服器與用戶端之間保持開啟的 TCP 連線,且不需要在每個要求中傳送 HTTP 標頭。

相關資訊