нужно отправлять случайное число с сервера (каждые 17 секунд) (это будет значение для вращения колеса), и пока он выбирается, я уже вращаю барабан (6800deg) и когда число пришло с сервера, я добавляю его туда, и колесо прокручивается до нужного мне случайного числа, а затем вычисляется позиция элемента div и подставляется число от 0 до 360, так что бы предыдущее вращение не влияло на следующие и рулетка не вращается в другую сторону в случае выпадения меньшего числа.
🔥Вопрос: Когда человек зашел на страницу, у меня колесо не крутится, он ждет пока пройдет прошлый раунд(при этом нет live показа кручения барабана и все данные которые пришли на frontend исчезают(значение для вращения барабана) ) такая же ситуация, когда человек перезагружает страницу, как я могу заставить колесо вращаться, даже если человек только что зашел на страницу и не пришлось ждать истечения последнего раунда?
(хороший пример рулетки с таким функционалом - https://m.csgofast.com/double, функционал у меня примерно такой-же но при перезагрузки страницы там барабан вращается, а у меня нет).
Не знаю нужен код или нет ну на всякий случай вот:
🔸FrontEnd:
const socket = io();
/// Показ на фронтэнде количество пользователей
socket.on('onlineUsers', (msg) => {
document.querySelector('.online-users-parent').textContent = msg;
})
socket.on('fromServerSpin', (msg) => {
/// Получение на фронтэнд значение для вращение барабана (Допустим 9421);
document.querySelector('.wheel').style.transform = rotate(6800deg);
/// Начать вращение барабана до 6800deg в момент когда барабан еще крутится (Через 3сек после начала раунда) изменить динамически значение Rotate на 9421deg
setTimeout(() => {
document.querySelector('.wheel').style.transform = rotate(${msg}deg);
}, 3000);
/// После выполнение Rotate до нужного значения сработает функция вычисления положения барабана в deg от 0 до 360
/// Но сейчас ее еще нет (Но это и не важно). Вопрос который меня интерисует в телеграм
});
🔸BackEnd:
const CONFIG = {
port: 3000,
};
const path = require('path');
const express = require('express');
const app = express();
const http = require('http').createServer(app).listen( CONFIG.port, () => console.log( 'Server has been starting...' ) );
const io = require('socket.io')(http);
app.use( express.static( path.join( dirname + '/public' ) ) );
io.on('connection', (socket) => {
// setInterval(() => {
// const random = Math.floor(Math.random() * 11000) + 6800;
// io.sockets.emit('fromServerSpin', random);
// }, 17000);
//Если я вставлю этот код сюда результат такой же
});
/// Каждые 17с отправлять на фронтэнд случайное число для вращения барабана
setInterval(() => {
const random = Math.floor(Math.random() * 11000) + 6800;
io.sockets.emit('fromServerSpin', random);
}, 17000);
/// Количество пользователей на сайте
setInterval(() => {
io.emit('onlineUsers', io.engine.clientsCount);
}, 150);
/// Показ главной страницы
app.get('/', (req, res) => {
res.sendFile( dirname + '/views/index.html' );
});
🔥Заранее спасибо за помощь!
gist.github.com
Наверное, это не по ноде вопрос
Обсуждают сегодня