Как сгенерировать случайное число для каждой страницы? - PullRequest
6 голосов
/ 28 сентября 2011

Я использую node.js и express, и я хотел бы сгенерировать случайное пятизначное число в app.js и вернуть его клиенту.

Я бы хотел сделать это на сервере, а не на клиенте, потому что Я хочу быть уверен, что число отличается для каждого пользователя, который в данный момент подключен .

Вот мой текущий (неработающий) код из app.js:

// My first attempt - a function to generate a random number.
// But this returns the same number to every client. 
function genRandNum() {
    return Math.floor(Math.random() * 90000) + 10000;
}
// Routes
app.get('/', function(req, res){
  res.render('index', {
    title: 'Hello world',
    random_id: genRandNum() // No good - not different for each user. 
  });
});

На самом деле есть две проблемы:

  1. Как мне сгенерировать число для каждогоклиент?
  2. Как я могу быть уверен номер отличается для каждого клиента?Нужно ли создавать в Redis хранилище открытых в данный момент сеансов и их номеров?

Спасибо за помощь новичку:)

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Ваш код работает для меня, с index.jade:

h1 #{random_id}

Однако, как написано, он генерирует случайный # для каждой страницы , а не только для каждого клиента. Потребуется какое-то резервное хранилище данных, чтобы постоянно гарантировать, что у каждого клиента есть уникальный #, но, поскольку вы используете только 5 цифр (90 КБ возможных идентификаторов), вы явно не обеспокоены тем, что это невозможно. И если вы заботитесь только об этом в контексте процесса с одним узлом, почему бы просто не использовать автоматически увеличивающееся значение?

var clientId = 1;
app.get('/', function(req, res){
  res.render('index', {
    title: 'Hello world',
    random_id: clientId++ 
  });
});
0 голосов
/ 28 сентября 2011

Для уникальных случайных чисел вы также можете обратиться за помощью к своему пользователю. Он может ввести несколько случайных нажатий клавиш, а затем вы можете изменить их / добавить / вычесть что-нибудь и отправить на сервер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...