如何从 Akka 中的 EventStream 创建服务器端事件?

法比安

我试过:EventStream -> Source -> Akka HTTP (SSE)

在我看来,这是行不通的,因为源将由 Akka HTTP 物化,complete(Source, ...)并将消息从 EventStream 发送到物化的源,我需要 ActorRef(有没有办法获取该 ActorRef?)


我在 GitHub 上找到了一个使用 ActorPublisher 的解决方案:https : //github.com/calvinlfer/Akka-HTTP-Akka-Streams-Akka-Actors-Integration

但是由于 ActorPublisher 是一个内部 API,我仍然希望有一个干净的解决方案。

杰弗里·钟

您可以使用Source.actorRef来创建Source将事件流元素转换为ServerSentEvent实例的 和BroadcastHub.sink,其方式如下:

val (sseActor, sseSource) =
  Source.actorRef[EventStreamMessageOrWhatever](10, akka.stream.OverflowStrategy.dropTail)
    .map(s => /* convert event stream elements to ServerSideEvent */)
    .keepAlive(1.second, () => ServerSentEvent.heartbeat)
    .toMat(BroadcastHub.sink[ServerSentEvent])(Keep.both)
    .run()

如果有下游需求,则发送到物化的消息(即事件流元素)向ActorRef下游发出。如果没有下游需求,则使用指定的溢出策略将消息缓冲到一定数量(在此示例中,缓冲区大小为 10)。

然后,您可以将物化 actor 订阅到EventStream

eventStream.subscribe(sseActor, ...)

物化Source可用于您的路径:

path("sse") {
  get {
    complete(sseSource)
  }
}

请注意,这种方法没有背压。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将click事件添加到由服务器端创建的JQuery元素中

来自分类Dev

如何在无胖框架中创建服务器端验证?

来自分类Dev

如何在Dart中创建客户端和服务器端都使用的通用类

来自分类Dev

如何在共享服务器服务中运行服务器端Javascript?

来自分类Dev

数据表-在向表中添加新数据时如何停止服务器端绘制事件

来自分类Dev

如何在CRM 2016服务器端中检索附加到表单的Javascript事件的名称

来自分类Dev

如何在PostgreSQL的服务器端C函数中为数据库NULL创建数据?

来自分类Dev

如何订阅事件流-服务器端

来自分类Dev

如何停止调用服务器端事件

来自分类Dev

如何订阅事件流-服务器端

来自分类Dev

如何根据培根中的某些EventStream更改切换流

来自分类Dev

如何从流星中的客户端调用服务器端功能

来自分类Dev

在Meteor中,如何在服务器端完成操作时在客户端知道?

来自分类Dev

如何从流星中的客户端调用服务器端功能

来自分类Dev

如何在OpenVPN中与服务器端共享客户端Internet连接?

来自分类Dev

开发人员工具->网络中奇怪的Chrome行为(无法监视EventStream /服务器发送的事件)

来自分类Dev

在Meteor中创建服务器端文件

来自分类Dev

服务器端310如何在Stamplay服务器中重定向,mod重写?

来自分类Dev

分页如何正确地在数据表中(ajax,服务器端)?

来自分类Dev

如何在django和psycopg2中使用服务器端游标?

来自分类Dev

如何在服务器端处理中对数据表使用搜索?

来自分类Dev

如何在Firebase中运行服务器端代码?

来自分类Dev

如何在angularjs中处理服务器端错误

来自分类Dev

如何在C#中从服务器端删除Cookie

来自分类Dev

如何在发布(服务器端)流星中获取用户Facebook ID

来自分类Dev

如何从asp.net-webpages中的Ajax请求在服务器端获取发布的文件?

来自分类Dev

在Meteor中,如何进行服务器端用户登录检查?

来自分类Dev

如何在AngularJS中实现服务器端搜索框

来自分类Dev

发生服务器端更新时,如何在AngularJS中更新$ scope?

Related 相关文章

  1. 1

    如何将click事件添加到由服务器端创建的JQuery元素中

  2. 2

    如何在无胖框架中创建服务器端验证?

  3. 3

    如何在Dart中创建客户端和服务器端都使用的通用类

  4. 4

    如何在共享服务器服务中运行服务器端Javascript?

  5. 5

    数据表-在向表中添加新数据时如何停止服务器端绘制事件

  6. 6

    如何在CRM 2016服务器端中检索附加到表单的Javascript事件的名称

  7. 7

    如何在PostgreSQL的服务器端C函数中为数据库NULL创建数据?

  8. 8

    如何订阅事件流-服务器端

  9. 9

    如何停止调用服务器端事件

  10. 10

    如何订阅事件流-服务器端

  11. 11

    如何根据培根中的某些EventStream更改切换流

  12. 12

    如何从流星中的客户端调用服务器端功能

  13. 13

    在Meteor中,如何在服务器端完成操作时在客户端知道?

  14. 14

    如何从流星中的客户端调用服务器端功能

  15. 15

    如何在OpenVPN中与服务器端共享客户端Internet连接?

  16. 16

    开发人员工具->网络中奇怪的Chrome行为(无法监视EventStream /服务器发送的事件)

  17. 17

    在Meteor中创建服务器端文件

  18. 18

    服务器端310如何在Stamplay服务器中重定向,mod重写?

  19. 19

    分页如何正确地在数据表中(ajax,服务器端)?

  20. 20

    如何在django和psycopg2中使用服务器端游标?

  21. 21

    如何在服务器端处理中对数据表使用搜索?

  22. 22

    如何在Firebase中运行服务器端代码?

  23. 23

    如何在angularjs中处理服务器端错误

  24. 24

    如何在C#中从服务器端删除Cookie

  25. 25

    如何在发布(服务器端)流星中获取用户Facebook ID

  26. 26

    如何从asp.net-webpages中的Ajax请求在服务器端获取发布的文件?

  27. 27

    在Meteor中,如何进行服务器端用户登录检查?

  28. 28

    如何在AngularJS中实现服务器端搜索框

  29. 29

    发生服务器端更新时,如何在AngularJS中更新$ scope?

热门标签

归档