Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. package com.mojolly.websocket
  2.  
  3. import org.eclipse.jetty.server.Server
  4. import javax.servlet.http.{HttpServlet, HttpServletResponse, HttpServletRequest}
  5. import org.eclipse.jetty.continuation.ContinuationSupport
  6. import java.lang.String
  7. import org.eclipse.jetty.webapp.WebAppContext
  8. import akka.actor.ActorRegistry
  9.  
  10. class CometServlet extends HttpServlet with Logging {
  11.  
  12. override protected def doGet(req: HttpServletRequest, resp: HttpServletResponse) {
  13. println("Got request for continuation")
  14. val cont = ContinuationSupport.getContinuation(req)
  15. cont.setTimeout(5000)
  16. println(cont.toString)
  17. if (cont.isInitial) {
  18. cont.getServletResponse.getWriter.println("hello...")
  19. cont.getServletResponse.flushBuffer
  20. ActorRegistry.actorsFor(classOf[PollerActor]) foreach { _ ! RegisterCallback(
  21. msg => {
  22. cont.setAttribute("messages", msg)
  23. cont.resume
  24. }
  25. )}
  26. }
  27. if(cont.isResumed && cont.getAttribute("messages") != null) {
  28. cont.getServletResponse.getWriter.println(cont.getAttribute("messages").toString)
  29. cont.getServletResponse.flushBuffer
  30. cont.setAttribute("messages", null)
  31. }
  32. if(cont.isExpired) {
  33. try {
  34. cont.getServletResponse.getWriter.println("")
  35. cont.getServletResponse.flushBuffer
  36. } catch {
  37. case e => {
  38. log.warn(e, "A problem writing to the stream on timeout")
  39. cont.suspend
  40. cont.complete
  41. }
  42. }
  43. }
  44. cont.suspend()
  45. }
  46.  
  47. }
  48.  
  49. object WebServer {
  50.  
  51.  
  52. def main(args: Array[String]) {
  53. val server = new Server(8888)
  54.  
  55. val context = new WebAppContext
  56. context.setDescriptor("src/main/webapp/WEB-INF/web.xml")
  57. context.setResourceBase("src/main/webapp")
  58. context.setContextPath("/")
  59.  
  60. context.setParentLoaderPriority(true)
  61.  
  62. server.setHandler(context)
  63.  
  64. server.start
  65. server.join
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement