Slide 93
Slide 93 text
จࣈνϟοτͷ্࣮ͷϙΠϯτ
class ChatController @Inject()(
implicit val system: ActorSystem,
implicit val materializer: Materializer,
streamChatService: ChatService
) {
def start(roomId: String) = WebSocket.accept[JsValue, JsValue] { request =>
val userName = request.queryString("user_name").headOption.getOrElse("anon")
val userInput: Flow[JsValue, ChatMessage, _] = ActorFlow.actorRef[JsValue, ChatMessage]
(out => ChatRequestActor.props(out, userName))
val room = streamChatService.start(roomId, userName)
val userOutPut: Flow[ChatMessage, JsValue, _] = ActorFlow.actorRef[ChatMessage, JsValue]
(out => ChatResponseActor.props(out,userName))
userInput.viaMat(room.bus)(Keep.right).viaMat(userOutPut)(Keep.right)
}
}