我正在使用安全社交和akka通过使用播放框架工作2.3的网络套接字向网络客户端发送消息 的WebSocket
def feedWS = WebSocket.tryAccept[JsValue] { implicit request =>
SecureSocial.currentUser[PDUser].map {
maybeUser => maybeUser match {
case Some(user) =>
Right(Feed.start(user.id))
case None => {
Left(Redirect("/login"))
}
}
}
但地图会返回未来,Feed.start也会返回未来。就像是 对象服务ws并连接到一个泵出消息的actor(演员工作正常)
def start(user: String): Future[(Iteratee[JsValue, _], Enumerator[JsValue])] = {
(actorFor(user) ? connect(user)).map {
case ConnectedE(enumerator) => {
val iteratee = Iteratee.foreach[JsValue] { event =>
val things = FromJson.aList(event)
actorFor(user) ! Subscribe(things)
}.map { _ =>
log.info("Disconnected")
actorFor(user) ! UnSubscribe
}
(iteratee, enumerator)
}
}
}
如果我确实可以或者需要等待,我该如何撰写? 目前,我有一个未来的未来。