CometActors существуют вне сеанса и поэтому не имеют доступа к (большей части).Решение состоит в том, чтобы инициализировать актера с помощью сообщения инициализации, содержащего требуемые данные сеанса.Для этого есть какой-то помощник, возможно, в LiftRules.Я разговариваю по телефону и перечитываю это по памяти, но, надеюсь, этого достаточно, чтобы продолжить.
В частности, вы захотите сделать что-то вроде:
for (
session <- S.session
message <- S.param("message")
) {
session.setupComet("myCometActor", Some("unique name, if you want it"), message)
}
в вашем Boot.scala
.
Проверьте LiftSession
, чтобы узнать больше.Я думаю, что может быть способ подключиться к LiftRules
, чтобы соответствующий код вызывался при создании сеанса ...
Обновление: А вот каков ваш CometActorможет выглядеть так, если мы отправим класс case, содержащий:
// ...
session.setupComet(
"myCometActor",
Some("unique name, if you want it"),
Message(message)
)
// ...
case class Message(text: String)
class CometMessage extends CometActor {
override def lowPriority = {
case Message(text) => {
// do something here with the text, whether settings a SessionVar or even just a plain var
}
}
}