我正在使用Socket.IO開發遊戲。我發現即使在本地主機上運行,延遲也非常高,即250毫秒。這是正常的嗎?Socket.IO中的高延遲
這裏是我使用來計算延遲代碼:
function startLatencyPoller(socket,callback)
{
setInterval(function() {
var startTime = Date.now();
socket.emit('ping');
socket.on('pong', function() {
latency = (Date.now() - startTime) /2; //round trip time/2
callback(latency);
});
}, 2000);
}
我的問題是其正常的Socket.IO有甚至在本地網絡以及是否有延遲高達250毫秒是進一步減少它的方法。
編輯: 我檢查了運輸,現在我使用websocket作爲運輸工具。
編輯: 問題已得到解決編輯代碼按照下面的答案後(除去聽者避免它們疊置):
setInterval(function() {
var startTime = 0;
var socketFunction = function() {
latency = (Date.now() - startTime) /2; //round trip time/2
callback(latency);
socket.removeListener('pong',socketFunction);
};
socket.on('pong', socketFunction);
startTime = Date.now();
socket.emit('ping');
}, 5000);
不,這不正常。很難說出原因可能在哪裏。如果在終端中使用普通ping,延遲是多少? – DerM 2014-09-30 15:02:51
本地ping速度非常快,小於1 ms。我不知道如何診斷這一點。 – coderboy 2014-10-01 09:44:05
即使我在同一臺機器上使用本地主機,我仍然運行到250毫秒。即使在同一網絡中的另一臺機器上點擊它,它的平均值也不會低於250毫秒。 – coderboy 2014-10-01 09:58:20