首页 > 解决方案 > Playframework 推送到 Websocket

问题描述

我通读了 Play Framework 的 WebSocket 文档,但没有找到解决问题的方法。

问题描述

我有一个 API(Play Framework),它通过 POST 事件从客户端 1(C1)接收数据。我有另一个客户端,如果它正在侦听,它应该会自动更新(阅读:对 API 有一个开放的 WebSocket)。如何将接收到的数据推送到 Websocket 中?

Play Framework 的文档只显示了如何通过 Websocket 对接收到的消息做出反应,而不是如何从服务器发送数据。

对解决方案的期望

你能为这种行为举一个简单的例子吗?也许我们可以将它包含在 Play Framework 的文档中。我对 Akka 没有太多经验。

更多信息

在 Play Framework 中有两种使用 Websocket 的方法。一种是与演员合作,另一种是直接与 Akka Streams 合作。我认为 Akka Streams 在这种情况下可能更直接,但我可以同时接受两种方式(或者可能是第三种方式?)。

如果您需要更多信息,请在下方评论!

标签: javaplayframeworkwebsocketakka-stream

解决方案


您必须像这样连接您的客户:

首先,在路由文件中:

GET     /connectWebSocket           @myPackage.myController.webSocket

然后,您的控制器:

def webSocket: WebSocket = WebSocket.accept[String, String] { _ =>
  ActorFlow.actorRef(ActorReceivingMessagesFromPost.props())
}

之后,您创建一个从帖子接收消息的参与者,接收方式如下:

class ActorReceivingMessagesFromPost(out: ActorRef) extends Actor {
  override def receive: Receive = {
    case msg: String => out ! msg
  }
}

如果您需要更多信息,请告诉我


推荐阅读