Когда два пользователи одновременно проходят опрос в Node.js, возникает необходимость распределить ответы от каждого пользователя таким образом, чтобы они не перепутались и были обработаны правильно.
Для решения этой задачи нам понадобится использовать механизм сеансов (sessions), который позволяет серверу отслеживать состояние каждого пользователя независимо от других пользователей.
Начнем с установки необходимых зависимостей. В Node.js мы можем использовать популярные пакеты как express
и express-session
.
Установка пакетов:
npm install express express-session
Далее создаем файл server.js
и подключаем зависимости:
const express = require('express'); const session = require('express-session'); const app = express(); // Настраиваем сессии app.use(session({ secret: 'my-secret-key', // Секретный ключ для подписи кук resave: false, saveUninitialized: true })); // Определяем маршруты для обработки запросов пользователей app.get('/survey', (req, res) => { // Пользователь начинает опрос, создаем новую сессию для него req.session.answers = []; // Создаем пустой массив для ответов res.send('Вы начали опрос. Введите свои ответы.'); }); app.post('/survey', (req, res) => { // Получаем ответ от пользователя const answer = req.body.answer; // Добавляем ответ в массив для правильного пользователя req.session.answers.push(answer); res.send('Ваш ответ принят. Продолжайте опрос.'); }); app.listen(3000, () => { console.log('Сервер запущен на порту 3000'); });
В приведенном примере мы создаем сервер приложений Express и определяем два маршрута. Первый маршрут, /survey
, обрабатывает GET-запрос и создает новую сессию для пользователя, хранящуюся в объекте req.session
. Затем мы отправляем пользователю сообщение о начале опроса.
Второй маршрут, /survey
, обрабатывает POST-запрос, который содержит ответ пользователя. Мы получаем ответ из тела запроса, добавляем его в массив ответов для правильного пользователя, который мы можем получить через объект req.session
. Затем мы отправляем пользователю подтверждение о принятии его ответа.
Таким образом, при одновременном прохождении опроса двумя пользователями, каждый пользователь будет иметь свой собственный массив ответов в его сессии. Это позволяет верно распределить ответы и корректно обработать каждого пользователя независимо от остальных.
Надеюсь, что данное объяснение помогло вам понять, как можно распределить ответы двух пользователей, проходящих опрос одновременно в Node.js. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.