Я разрабатываю игру, используя Socket.IO. Я нахожу, что задержки очень высокие, т.е. 250 миллисекунд, даже при работе на localhost. Это нормально ?Высокие задержки в 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 мс даже в локальной сети, и есть ли являются способами его дальнейшего уменьшения.
EDIT: Я проверил транспорт, и прямо сейчас я использую websocket в качестве транспорта.
EDIT: Проблема была решена после редактирования коды в соответствии с ниже ответа (удаление слушателя избежать их нагромождения):
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);
Нет, это не нормально. Трудно сказать, где может быть причина. Что такое латентность, если вы используете обычный пинг в терминале? – DerM
Локальные пинты очень быстрые, менее 1 мс. Я не уверен, как диагностировать это. – coderboy
Im работает в 250 мс, даже когда я использую localhost на той же машине. Это согласовано даже на разных машинах, в которых я это пробовал. Даже если вы ударили его с другого компьютера в той же сети, он по-прежнему не будет меньше среднего значения в 250 мс. – coderboy