@kharisergey

Онлайн активация АРМа (JS), как реализовать?

Добрый день.
Подскажите, как максимально быстро и эффективно реализовать такой алгоритм? (бэкэнд на Laravel, фронтэнд на jQuery и Angular, база MySQL).

Дано
1. Учебный класс из N компьютеров (АРМ), которые пронумерованы (наклейка с порядковым номером на мониторе).
2. Ученики (=< N), сдающие экзамен.
3. Учитель, который рассаживает учеников по АРМ

Найти
Необходимо реализовать следующую логику:
1. На всех компьютерах в классе открыта веб-страница с надписью "АРМ №хх НЕ АКТИВИРОВАН" и заблокирован любой ввод с клавиатуры/мыши.
2. Учитель запускает в класс по одному ученику, сверяет его данные из дневника с данными, внесенными в базу данных.
3. Если результат сравнения положительный, система должна выдать на экран учителя случайный номер АРМ, за который надо посадить данного ученика.
4. Учитель нажимает кнопку "Активировать АРМ №хх" и экран данного АРМ разблокируется (переходит на другую веб-страницу). Активация делается учителем удаленно со своего рабочего места.
5. Учитель называет номер АРМ ученику и тот садится за компьютер в классе с указанным порядковым номером.
6. Учение сдает экзамен, результаты сохраняются вместе с номером АРМ, на котором он сдавал экзамен.

Вопрос: каким образом это реализовать на JS (п. 4), чтобы активация проходила в режиме реального времени? Как сделать привязку конкретного компьютера к номеру АРМ (не привязываясь к IP-адресам, MAC-адресам и именам компьютеров)? Классов может быть несколько и в них может проходить экзамен одновременно.
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Вопрос: каким образом это реализовать на JS (п. 4), чтобы активация проходила в режиме реального времени?
Самое простое - использовать pusher, который из коробки работает в Laravel и для ваших целей будет, скорее всего, бесплатен. Вариант посложнее и кривее - писать в базу, а на стороне АРМ делать периодические ajax-запросы для проверки. Уровень с боссом - писать демона, который будет слушать какую нибудь ZeroMQ и толкать обновления по веб-сокетам.

Как сделать привязку конкретного компьютера к номеру АРМ (не привязываясь к IP-адресам, MAC-адресам и именам компьютеров)?
Опять же, самое простое - сделать отдельную сервисную страницу, на которой будет проставляться номер. И писать его в LocalStorage. Вариант побезопаснее - писать в сессию, но для этого нужно аутентификацию и постоянно её пинать, чтобы не отвалилась.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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