Lift provides powerful facilities to build highly interactive web applications.

Ajax

Lift has powerful set of Ajax features that all you to create Ajax controls with as little as 1 line of code:
 
  ajaxButton("", s => {println("you said: "+s); SetHtml("place", <b>{s}</b>)})
  
  

Comet

Lift supports Comet-style long polling with very little work on the part of the developer. Here's the code the implements the clock that you see in this demo:
class Clock extends CometActor {
  override def defaultPrefix = Full("clk")
  // schedule a ping every 10 seconds so we redraw
  ActorPing.schedule(this, Tick, 10 seconds) 

  private lazy val spanId = uniqueId+"_timespan"

  def render = bind("time" -> timeSpan)

  def timeSpan = (<span id={spanId}>{timeNow}</span>)

  override def lowPriority = {
    case Tick =>
      partialUpdate(SetHtml(spanId, Text(timeNow.toString)))
    ActorPing.schedule(this, Tick, 10 seconds) 
  }
}