2

我正在尝试将现有应用程序移植到 Play 框架中。该应用程序使用一个库来执行 SMPP 传输,该库已经以异步方式发送消息的方式实现(在成功传输时调用侦听器对象的单独线程中)。我想知道如何使用相同的库并返回一个 Promise 对象,该对象在更新侦听器时将结果返回给 Play 的 Web 请求。

我看到的所有示例都说明了它是如何使用 play WS 库或 akka 完成的,它负责在单独的线程上完成工作。如果我已经有这样的实现,如上所述,我如何将它与 Play 集成?

4

1 回答 1

2

您的 SMPP 传输库为您提供了一个句柄,您可以在该句柄上注册完成侦听器,对吗?在这种情况下,您应该能够像这样创建一个桥:

val p = scala.concurrent.Promise[ResultType]()
val handle = smpp.doit() // or whatever the method is called
handle.onComplete(h => p.success(h.result)) // or p.complete if things can fail
return p.future

然后生成的 Future 可用于完成 Async Play 操作。

于 2013-04-06T11:20:39.280 回答