У меня есть источник Akka, который транслирует числа с помощью Play Akka WebSocket.Клиент веб-сокета может отправлять сообщения фильтра, например 0 или 1, для получения четных или нечетных сообщений.
Я не понимаю, как отправить фильтр на источник.
Ценю любые отзывы
def numbersSource(filter: Int) =
Source(1 to 1000)
.throttle(1, 1.second, 1, ThrottleMode.Shaping)
.filter{ e =>
filter match {
case 0 =>
e % 2 == 0
case 1 =>
e % 2 != 0
case _ =>
true
}
}.map(_.toString)
def testFlow(): Flow[String, String, NotUsed] = {
Flow[String]
.filter { msg =>
//message from ws client
println(">>"+ msg)
//validate
msg != null && !msg.isEmpty
}
.via(Flow.fromSinkAndSourceCoupled(Sink.ignore, numbersSource(1)))
}
def testWSFlow ():WebSocket = {
WebSocket.acceptOrResult[String, String] {
case rh if sameOriginCheck(rh) =>
Future.successful(
Right(testFlow()))
case rejected =>
LOGGER.error(s"Request $rejected failed same origin check")
Future.successful {
Left(Forbidden("forbidden"))
}
}
}