30 lines
816 B
Scala
30 lines
816 B
Scala
package controllers
|
|
import actor.KnockOutWebSocketActor
|
|
import org.apache.pekko.actor.{ActorRef, ActorSystem, Props}
|
|
import org.apache.pekko.stream.Materializer
|
|
import play.api.*
|
|
import play.api.libs.streams.ActorFlow
|
|
import play.api.mvc.*
|
|
|
|
import javax.inject.*
|
|
|
|
|
|
@Singleton
|
|
class WebsocketController @Inject()(
|
|
cc: ControllerComponents,
|
|
)(implicit system: ActorSystem, mat: Materializer) extends AbstractController(cc) {
|
|
|
|
object KnockOutWebSocketActorFactory {
|
|
def create(out: ActorRef) = {
|
|
Props(new KnockOutWebSocketActor(out))
|
|
}
|
|
}
|
|
def socket() = WebSocket.accept[String, String] { request =>
|
|
ActorFlow.actorRef { out =>
|
|
println("Connect received")
|
|
KnockOutWebSocketActorFactory.create(out)
|
|
}
|
|
}
|
|
|
|
|
|
} |