aboutsummaryrefslogtreecommitdiff
path: root/server/app/controllers/HomeController.scala
diff options
context:
space:
mode:
Diffstat (limited to 'server/app/controllers/HomeController.scala')
-rw-r--r--server/app/controllers/HomeController.scala23
1 files changed, 19 insertions, 4 deletions
diff --git a/server/app/controllers/HomeController.scala b/server/app/controllers/HomeController.scala
index 13bc8dc..4d48c98 100644
--- a/server/app/controllers/HomeController.scala
+++ b/server/app/controllers/HomeController.scala
@@ -1,14 +1,24 @@
package controllers
-import play.api._
+import akka.actor.{ActorRef, ActorSystem, Props}
+import akka.stream.Materializer
+import chat._
+import javax.inject._
+import play.api.libs.streams.ActorFlow
import play.api.mvc._
+import play.api.mvc.WebSocket.MessageFlowTransformer
import upickle.default._
/**
* This controller creates an `Action` to handle HTTP requests to the
* application's home page.
*/
-class HomeController extends Controller {
+class HomeController @Inject() (
+ implicit system: ActorSystem,
+ mat: Materializer
+) extends Controller {
+
+ lazy val room: ActorRef = system.actorOf(Props(classOf[RoomActor]))
/**
* Create an Action to render an HTML page.
@@ -21,8 +31,13 @@ class HomeController extends Controller {
Ok(views.html.index())
}
- def message = Action { implicit request =>
- Ok(write(chat.Message("hello")))
+ def socket(uid: String) = WebSocket.accept[Command, Event] { request =>
+ ActorFlow.actorRef(out => Props(classOf[ClientActor], uid, room, out))
}
+ implicit val transformer = MessageFlowTransformer.stringMessageFlowTransformer.map(
+ in => read[Command](in),
+ (out: Event) => write(out)
+ )
+
}