如何檢查 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 標頭。
相關資訊