Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

HowProgrammingWorks/EventDrivenProgramming

Repository files navigation

Событийно-ориентированное программирование

  • Каталог /EventEmitter
    • simpleEventEmitter.js - простейшая реализация EventEmitter
    • enhancedEventEmitter.js - расширенная версию EventEmitter для Node.js
  • Каталог 'LiveTable' - пример таблицы, которая синхронизируется между несколькими браузерами через отправку событий по Websocket.

Перед запуском LiveTable нужно запустить npm install из этого каталога, npm устаносит зависимости, указанные в package.json, после этого можно запускать sudo node server. Внимание, если другая программа заняла 80 порт, то нужно ее остановить, это может быть Apache, Skype, nginx, IIS и др. Если не удается освободить 80 порт, то заменить его на любой другой порт, поправив номер порта в коде сервера и допишите его в URL вебсокета в коде клиента.

Задания

  1. Реализовать расширенный EventEmitter, как в 'enhancedEventEmitter.js' на базе простого из simpleEventEmitter.js, а не на базе встроенной в Node.js библиотеки events. Адаптировать расширенный EventEmitter для одинаковой работы в Node.js и в браузере.
  2. Модифицировать 'LiveTable' так, чтоб в ячейках можно было использовать формулы, как в электронных таблицах, например: = A1 + B2, но сделать это без использования циклов, а на событийной модели, т.е. при помощи подписки на изменения, с применением EventEmitter.
  3. Транслировать события не только внутри приложения, но и по сети через Websocket и отправлять их в EventEmitter.

Дополнительные задания

  1. Сделать сетевую реализацию EventEmitter, делающую взаимодействие по сети прозрачным между клиентом и сервером.

  2. Модифицировать сетевую реализацию EventEmitter, чтоб взаимодействие по сети было прозрачным между несколькими клиентами, через сервером. Реализовать ретрансляцию событий.

AltStyle によって変換されたページ (->オリジナル) /