Большинство веб-сайтов сейчас используют одно ядро процессора из многих, тем самым они значительно сокращают взаимодействие с пользователем, замораживая всю сеть в ее фактическом состоянии. В эпоху глубокого обучения и опыта работы в реальном времени кажется, что сеть уперлась в стену.
Почему все это происходит? Причина предельно проста — безопасность потоков. Веб-воркеры были сделаны изолированными по дизайну, и самым неудобным из этого является ограничение запуска веб-воркеров из отдельного файла.
Поэтому для облегчения работы с параллельными процессами в веб-среде мы выпустили новую библиотеку под названием The Dark Wasp. В двух словах, идея состоит в том, чтобы сохранить большую часть кода веб-приложения в хранилище и загрузить его по запросу в отдельном потоке, не нужно загружать всю кодовую базу сразу. Одни и те же функции можно использовать во внешнем и внутреннем интерфейсе (веб-браузер или Node.js).
Для доступа к хранилищу нам понадобится имя самого хранилища — свойство «app» и уникальный идентификатор текущего пользователя — свойство «peer». Если хранилища с таким именем не существует, оно будет создано, и пользователь получит права владельца. Последние присоединившиеся пользователи будут иметь ограниченные права, будучи простыми одноранговыми узлами.
Теперь для примера создадим случайную функцию:
В приведенном выше примере app.wasp.random.set()
означает создание осы (лямбда-функции) с именем «random» и кодом, который следует в методе set()
. При этом хранилища не существует, поэтому «пир» получит права владельца.
Далее доставляем функцию в хранилище, выполнив файл:
node store.js
Сделанный! Дальнейшее использование хранимых функций проще простого, в браузере это выглядит следующим образом:
… и окружение Node.js («одноранговый узел» не первый, так что в данном случае никаких особых примет)
Вот и все!