【发布时间】:2018-03-17 14:02:03
【问题描述】:
我一直在学习一些关于 Spring 5 WebFlux、反应式编程和 websockets 的知识。我看过 Josh Long 的 Spring Tips: Reactive WebSockets with Spring Framework 5。通过 WebSocket 连接将数据从服务器发送到客户端的代码使用 Spring Integration IntegrationFlow 发布到 PublishSubcribeChannel,PublishSubcribeChannel 订阅了自定义 MessageHandler 接收消息,将其转换为对象,然后转换为 Json 并从提供给 Flux.create() 的回调中发送到 FluxSink,该回调用于发送到 WebSocketConnection。
我想知道是否推荐使用 IntegrationFlow 和 PublishSubscribeChannel 将事件从后台进程推送到客户端,或者在这个特定示例中这是否更方便(监控文件系统)。我想如果你可以控制后台进程,你可以让它直接发送到FluxSink?
我正在考虑类似于以下的用例:
- 一个机器学习过程,其进度受到监控
- 发送给玩家的游戏世界状态更新
- 聊天室/团队协作软件
- ...
【问题讨论】:
-
对这个问题的答案也很感兴趣。 Reactor 的 Flux 不是消息总线,所以也许这就是 Channel 更合适的原因。
-
对答案也很感兴趣
标签: spring websocket reactive-programming spring-webflux