java - 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 在这种情况下可能更直接,但我可以同时接受两种方式(或者可能是第三种方式?)。
如果您需要更多信息,请在下方评论!
解决方案
您必须像这样连接您的客户:
首先,在路由文件中:
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
}
}
如果您需要更多信息,请告诉我
推荐阅读
- powershell - 导出 Azure Sql db 并存储在存储帐户中的问题
- .net - 由于“NuGet 预览功能”,Visual Studio CentralPackageVersionManagement 无法恢复
- reactjs - 由于以下错误,我的 React 应用程序无法部署到 Netlify
- python - 无法从自制软件安装 hdf5 库
- html - 网站图标不变
- arrays - 在 Perl 的数组数组中删除 undef
- c# - C#,将多行插入 SQL 数据库
- html - 如何更改此 HTML 文件中文本的颜色?
- kotlin - 如何以“yyyy-mm-dd hh:mm:ss”格式反序列化日期?
- django - 带有关键字参数的命名 URL 的 NoReverseMatch