Front Web Framework: часть 4

Apr 09, 2019 20:47


Запилил TODO пример с использованием servant, servant-auth-cookie, wai-websockets. Ниже краткий отчёт о ходе реализации.

  • В Yesod MonadHandler добавляет к каждому запросу контекст сессии, к которому в любой момент времени можно получить доступ.
  • В куках в каждую сессию можно положить произвольную мапу, и работать с ней, как из хэндлера, так и из вебсокета.
  • В Servant такого счастья нет, надо заворачивать маршруты в куки с двух сторон, добавляя ручную обработку заголовков запроса и ответа. 
  • В пакете servant-auth нет поддержки шифрования кук, не очень безопасно получается.
  • В servant-auth-cookie (альтернатива) можно из API пакета собирать своё уютненькое шифрование с ротирующимися ключами. Для себя взял простой пример. Забавно, к пакету приложили руки мои знакомые Stack Builders из Эквадора и @mrkkrp, чьи пакеты я успешно юзал в прошлом. Пользуясь случаем, передаю привет и респект.
  • (Хотя zip он когда-то давно патчить отказался, чтобы обеспечить поддержку распаковки архива, созданного 7-Zip, как не RFC-compliant archive. Впрочем, я не в обиде).
  • servant-websockets оказался нежизнеспособным в плане анализа прилетающего реквеста, а точнее - его заголовков. Последовал совету @qnikst, взял wai-websockets и не пожалел! Респект!

Пока всё это делал, нашёл способ не завозить в Fay классы типов.



На очереди API для broadcast, для одиночной сессии. Ещё предстоит научиться поддерживать (ярлычок maintainer не просто так даётся ведь) пакеты и пилить инфраструктуру под front в виде сайта и площадки для экспериментов. Впереди ещё много работы.

servant, yesod, haskell, websockets

Previous post Next post
Up