170 похожих чатов

🔥Привет, я делаю случайную рулетку на socket.io , и мне

нужно отправлять случайное число с сервера (каждые 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' );
});


🔥Заранее спасибо за помощь!

2 ответов

11 просмотров

gist.github.com

Наверное, это не по ноде вопрос

Похожие вопросы

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта