我正在尝试在CometActor中检索url参数,以验证数据源是否与目的地匹配,例如,某个用户从A室发送一条消息,该消息仅在A室而不是B室或C室中接收和显示。
我试过了:
S.param("message").openOr("")
但是它总是空的,可以做到吗?还是有另一种方法可以阻止Comet消息到达不应该去的地方?
在此先感谢您的帮助,非常感谢:)
CometActor存在于会话之外,因此无权访问(大部分)会话。解决方案是使用包含所需会话数据的初始化消息来初始化参与者。也许在LiftRules中有某种帮助者可以做到这一点。我正在用手机打电话,并从记忆中重新叙述了这一点,但希望它能继续进行下去。
具体来说,您将要执行以下操作:
for ( session <- S.session message <- S.param("message") ) { session.setupComet("myCometActor", Some("unique name, if you want it"), message) }
在你的Boot.scala。
Boot.scala
查看LiftSession更多。我认为可能有一种方法可以LiftRules让创建会话时调用相关代码…
LiftSession
LiftRules
更新: 如果我们发送包含以下内容的案例类,这就是您的CometActor的外观:
// ... 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 } } }