0
在akka-http websocket应用程序中,我有一条Route回应给定的消息,并且我还需要在应用程序中维护状态。所以下面的工作正常:使用statefulMapConcat返回源代码
override protected def routes: Route =
pathSuffix("echo") {
handleWebSocketMessages(echoMessageFlow)
}
def echoMessageFlow: Flow[Message, Message, NotUsed] = Flow[Message].statefulMapConcat {() =>
implicit var state = new SessionState()
msg: Message =>
List(msg, msg, msg) // echo the message back 3 times
}
但是,我也需要扼杀回声消息,所以只有一个每秒发生。所以我希望能够做到这一点:
def echoMessageFlow: Flow[Message, Message, NotUsed] = Flow[Message].statefulMapConcat {() =>
implicit var state = new SessionState()
msg: Message =>
Source(List(msg, msg, msg)).throttle(1, 1 second, 1, ThrottleMode.shaping)
}
然而,statefulMapConcat
返回的功能要求,这是一个Iterable
。有什么方法可以返回Source
吗?
这正是我一直在寻找。谢谢! –