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
嗎?
這正是我一直在尋找。謝謝! –