On Mon, Aug 31, 2009 at 2:32 PM, Michel Klijn <michel.kl...@gmail.com>wrote:

>
> Hello,
>
> I have created a simple test application to play around with comet.
> it's a "live CRUD table" the comet updates its clients with every
> change to the records( There is no database, just a List[Game] in the
> Game object). I have three questions about this:
>
> 1.I know that Comets won't work with GAE-J, but which application
> servers can i use?


Anything except GAE.


> Or is there one that's "recommended"?


Jetty is my favorite.  Glassfish will do particularly well once the Servlet
3.0 spec is baked into a production version.


> Since i had
> JBOSS 4.2.3AG already on my system i tried this, but without succes...
>

What's the failure?  Does the Lift examples/example app run okay on JBoss?
What happens in Firebug?


> 2.Is the way i'am using JQuery right way? or maybe, is there a better
> way to this?
>

Looks reasonable to me.


> 3. The three case classes: NewGame(g: Game),RemoveGame(g:
> Game),UpdateGame(g: Game) all extend GameMsg. In the partial function
> highPriority i have tried to match: NewGame(g), RemoveGame(g) and
> UpdateGame(g) that doesn't seem to work, but why?
>

Because you're not matching UpdateGame(g), you're matching (g: Game,
NewGame()) => ...


>
> Cheers,
>
> Michel
>
> class GameList extends CometActor with CometListenee{
>        override def defaultPrefix = Full("entry")
>        override def parentTag = <tbody></tbody>
>        override def devMode = false
>        override def hasOuter = false
>
>    protected def registerWith = Game
>        override def render = new RenderOut( (Game.getGames.flatMap
> (bindGameRow(_))).toSeq )
>
>        override def highPriority: PartialFunction[Any,Unit] = {
>                case (g:Game, NewGame()) => partialUpdate(PrependHtml
> (this.uniqueId,bindGameRow(g)))
>                case (g:Game, RemoveGame()) => partialUpdate(RemoveById
> (""+g.gid))
>                case (g:Game, UpdateGame())  =>
> partialUpdate(ReplaceWithById
> (""+g.gid, bindGameRow(g)))
>                }
>
>        private def bindGameRow(g:Game) =
>              <tr id={""+g.gid}>
>                   {bind("id" -> g.gid,
>                           "name" -> SHtml.link("/game", () =>
> CurrentGame(Full(g)),
> Text(g.gname)),
>                            "players" -> g.playerStatus,
>                            "owner" -> g.creator,
>                            "timestamp" -> <b>{g.createdOn.toString}</b>,
>                            "joinlink" -> SHtml.ajaxButton("Delete game!",
>
> {() => Game ! Game.DeleteGame(g);Noop}))
>                   }
>             </tr>
>
> }
>
> //some javascript stuff
> object RemoveById {
>  def apply(uid: String) = new RemoveById(uid)
> }
>
> class RemoveById(val uid: String) extends JsCmd {
>  def toJsCmd = "try{jQuery("+ ("#"+uid).encJs + ").remove();} catch
> (e) {}"
> }
>
> object ReplaceWithById {
>  def apply(uid: String, nsq: NodeSeq) = new ReplaceWithById(uid,
> nsq.toString)
> }
>
> class ReplaceWithById(val uid: String, val content:String) extends
> JsCmd {
>  def toJsCmd = "try{jQuery("+("#"+uid).encJs+").replaceWith($('"+
> content.encJs +"'));} catch (e) {}"
> }
>
> >
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to