Я работал над игрой, используя JavaScript Canvas и Node JS в качестве личного проекта, и заметил некоторое нечетное поведение сервера, поэтому я сделал минимальный сервер и клиента для его проверки, и я заметил что -то очень странное. Например, если я установил скорость тика сервера на 100 клещей в секунду (это также происходит с другими таковыми показателями), а затем запускаю сервер с помощью основного цикла: < /p>
let tickCounter = 0;
let lastPrint = Date.now();
function gameLoop() {
tickCounter++;
const now = Date.now();
if (now - lastPrint >= 1000) {
console.log(Ticks per second: ${tickCounter});
lastPrint = now; tickCounter = 0;
}
setTimeout(gameLoop, TICK_INTERVAL)
}
gameLoop();
< /code>
Сервер выводит 65 клещей в секунду (что должно быть 100). Однако, когда я запускаю свой клиент со следующим кодом < /p>
var mouse = { X: canvas.width / 2, Y: canvas.height / 2, }
window.addEventListener('mousemove', e => {
mouse.X = e.clientX;
mouse.Y = e.clientY;
console.log(mouse.X, mouse.Y)
socket.emit("rotate", { "angle": Math.atan2(mouse.X - canvas.width / 2, mouse.Y - canvas.height / 2) + Math.PI })
});
< /code>
, а затем переместите мою мышь, необъяснимо скорость клеща достигается до 100 (каким она должна быть) на сервере. Это изменение скорости клещей вызывает много проблем с моим фактическим проектом. Просто чтобы уточнить, я использую Windows, а также экспрессию JS для создания сервера. Единственное, что работает, - это просто постоянно отправлять бесполезные данные от клиента на сервер, но это не является устойчивым решением и приведет к ненужному напряжению на сервере позже в проекте.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ient-input