Scala Lift - сообщение об инициализации кометного актера - PullRequest
1 голос
/ 01 ноября 2011

У меня есть следующий актер кометы:

class ChatComet extends CometActor with CometListener {

    private var messages: List[ChatItem] = Nil 

    def registerWith = ChatServer

    override def lowPriority = {

        case v: List[ChatItem] => 

        messages = v; 
        reRender()

    }

    def render = {

        "li *" #> messages.map(message =>

            ".name *" #> message.name &
            ".text *" #> message.value

    )

}

То, что распределяет сообщения по различным комнатам, у меня нет способа ограничить, какие сообщения в конечном итоге и где, поэтому сообщение от RoomA заканчивается в RoomA, а не в RoomB.

Я слышал, что вы можете инициализировать кометных актеров с помощью какого-то сообщения, которое в моем случае могло бы служить идентификатором комнаты.

Это правильный способ делать вещи? Если так, то как мне поступить?

Заранее спасибо за любую помощь, высоко ценится:)

Ответы [ 3 ]

1 голос
/ 01 ноября 2011

В шаблоне назовите кометного актера, вот так:

 <div class="l:comet?type=CometActor;name=roomA"> stuff </div>

В вашем CometActor, затем сопоставьте имя, например, так:

    def lowpriority = {
       case NewComment(room, msg) => {
      name.map(x => x match {
        case "roomA" => {
          stuff
        }
    }
  }

Теперь у вас, вероятно, нет явных имен, таких как "roomA", но вы можете сохранить список имен ваших комнат, а затем просто сопоставить их.

0 голосов
/ 01 ноября 2011

Для инициализации CometActors в целом, проверьте мой ответ на S.param в CometActor. При этом ответы Дэйва и Тайлера кажутся более подходящими для того, что вы хотите сделать.

0 голосов
/ 01 ноября 2011

Дайте своим именам актеров кометы, связанных с чатами.Тогда новый Актер будет построен за комнату.Вам не нужно будет делать какую-то особую обработку в самом вашем актере;если вы не хотите иметь специальные функции в зависимости от комнаты.

Вы можете увидеть хороший пример со ссылкой на вики Lift , который показывает, как вы можете использовать фрагментназначить имена своим кометным актерам.

...