Недавно мы выполнили проект с использованием свул , который проектирует передачу информации на передний конец интерфейса и мониторинг состояния пользователей, не заходящих на посадку. Вот мой опыт из этого. Пожалуйста, оставьте комментарий по поводу улучшения.
анализ требований
Давайте предположим, что есть какое-то требование. Я нажимаю на кнопку 1 на задней панели, и на домашней странице появляется надпись “кнопка 1 активирована на задней панели”. Кнопка 2 нажимается на задней панели, и на странице списка появляется надпись “Кнопка 2 активируется на задней панели”. Переходите на разные страницы в соответствии с разными сценариями.
Идеи Кода
Свул фд
Клиентский браузер открывает или обновляет интерфейс и генерирует дескриптор процесса в службе swool fd Каждый раз, когда на странице браузера есть код JS, который открывает ссылку на websocket, он генерирует, и каждый раз, когда он обновляется, он открывается перед закрытием fd Для создания нового, новый будет сгенерирован при закрытии интерфейса. Правила генерации Swool fd являются инкрементными с 1.
Хранилище хэшей Redis FD
Давайте настроим ключ для swool:данные типа хэша fds Redis, fd Для хэш-полей мы храним информацию о параметрах URL-адреса в интерфейсном запросе websocket для значения каждого поля (в соответствии с гибкостью самой бизнес-сложности я приведу идентификатор сеанса по URL-адресу в проекте). Каждый раз, когда ссылка открывает сервис swool, мы храним ее информацию, и каждый раз, когда страница закрывается, мы очищаем ее поля. Хранить в redis следующим образом
Запуск под-сценария push
Когда запуск выполняется в интерфейсе, служба HTTP swool запрашивается через фоновый завиток, и служба HTTP swool распределяется для соответствующей логической обработки в соответствии с параметрами, которые вы передаете мне. Например, запрос curl 127.0.0.1:9502 страница=назад&функция=pushHomeLogic&токен=123456 Мы можем зависеть от входящих функций Параметров, которые распространяются на соответствующую логическую обработку в фоновом режиме. Если распространяется в pushHomeLogic Метод. Он реализует свою собственную логику. Чтобы предотвратить чрезмерное если |/еще , а также Для каждой операции Мы используем замыкания. call_user_func Методы следующие.