Signals, Server-sent Events
Цель: изучить технологию server-sent events, создать интерфейс используя сигналы для его реактивности.
Содержание и порядок выполнения лабораторной работы:
- Изучить материал в источниках.
- Создать от ветки main ветку lab9.
- Задачей работы является создать интерфейс для отображения счета для вариантов камень, ножницы, бумага (количество выигрышей, проигрышей и общего количества раундов).
- Создать документ html с title «ФИО - Лабораторная работа №9».
- Добавить кнопку “Следить за играми”, при нажатии на которую создается экземпляр EventSource и начинается обработка поступающих данных. URL для EventSource -
http://194.67.93.117:80/rps/stream
. Событие:round
, данные формата JSON{player1: "Камень"/"Ножницы"/"Бумага", player2: "Камень"/"Ножницы"/"Бумага"}
. - Добавить кнопку “Остановить”, которая закрывает соединение.
- Реализовать Signal и Effect используя классы.
- Реализовать класс компонента для отображения результатов (заголовок, количество выигрышей, проигрышей и общего количества раундов).
- Создать необходимые компоненты, сигналы и эффекты для связи входящих по SSE данных и будущего отображения в интерфейсе.
- Помните о валидности HTML.
- Провести ручное тестирование в браузере.
- Отформатировать документы.
- Убедиться, что нет замечаний от ESLint.
- Зафиксировать результаты работы с помощью системы контроля версий git и отправить ветку lab8 в репозиторий на github.
- Загрузить проект на Render через ручную загрузку (manual deploy).
Требования к JS:
- HTML код валиден.
- Отсутствуют ошибки ESLint в панели Problems в VS Code.
- Отсутствуют ошибки в консоли браузера при работе с веб-страницей.
Результаты выполнения лабораторной работы:
Результаты работы проверены наставником.
Статическая веб-страница на хостинге, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.
Источники
- Использование server-sent events
- EventSource
- Наблюдатель
- The Observer Pattern
- Реактивность в программировании
- Patterns for Reactivity with Modern Vanilla JavaScript
- Reactive UI
- Proposal Signals
- Signal
- Signals vs. Observables, what’s all the fuss about?
Вопросы для защиты
- Принцип работы SSE?
- Использование объекта EventSource.
- Применение реактивности.
- Использование состояния/state.
- Шаблон наблюдатель (классы, поля, методы).
- Идея Signal, его устройство.
- Что происходит когда создается effect.
- Отличие Signal и Observer.
- Организация частей интерфейса в компоненты (классы).