как отправить сообщение из клиента websocket в Akka Source с помощью Akka Streams в Play - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть источник 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"))
      }
    }
 }
...