본문 바로가기

Development/Web & Server

[Play Framework2] Comet sockets

Comet response 란 text/html 로 이루어지고 <scirpt> 태그에 감싸여진 응답을 말한다고 한다.... 본인은 처음 알았음..

그래서 이걸 쉽게 쓸 수 있는 방법을 소개한다.


참고 사이트 : https://www.playframework.com/documentation/2.3.x/ScalaComet


def comet = Action {
  val events = Enumerator(
    """<script>console.log('kiki')</script>""",
    """<script>console.log('foo')</script>""",
    """<script>console.log('bar')</script>"""
  )
  Ok.chunked(events).as(HTML)
}

위의 코드를 웹 브라우저에서 실행결과로 받아보면 콘솔창에 kiki, foo, bar가 출력되어지는 걸 확인 할 수 있다.

이걸 이제 간편화 하는 단계를 살펴보자


import play.twirl.api.Html

// Transform a String message into an Html script tag
val toCometMessage = Enumeratee.map[String] { data =>
  Html("""<script>console.log('""" + data + """')</script>""")
}

def comet = Action {
  val events = Enumerator("kiki", "foo", "bar")
  Ok.chunked(events &> toCometMessage)
}


이렇게 script 부분만 따로 작성하고.. 간편해졌다. 여기서 더 간편하게


def comet = Action {
  val events = Enumerator("kiki", "foo", "bar")
  Ok.chunked(events &> Comet(callback = "console.log"))
}

위와 같이 작성하면 된다...


'Development > Web & Server' 카테고리의 다른 글

[Play Framework2] JPA  (0) 2015.06.01
[Play Framework2] WebSockets  (0) 2015.05.26
[Play Framework2] Streaming HTTP responses  (0) 2015.05.25
[Play Framework2] Action composition  (0) 2015.05.23
[Play Framework2] Session and Flash scopes  (0) 2015.05.22