我最近学习了一些关于 Spring 5 WebFlux、反应式编程和websocket的内容。我看了Josh Long的Spring Tips: Reactive WebSockets with Spring Framework 5。发送从服务器通过 WebSocket 连接到客户端的数据的代码使用了 Spring Integration中的IntegrationFlow
,它发布到一个具有自定义MessageHandler
订阅者的PublishSubcribeChannel
,该处理程序将消息转换为对象,然后将其转换为Json并发出到FluxSink
中, 由传递给Flux.create()的回调函数使用,这用于发送至WebSocketConnection
。
我想知道在后台进程向客户端推送事件时,是否建议采用IntegrationFlow
和PublishSubscribeChannel
,或者这仅仅是在这个特定的例子中更加方便(监视文件系统)。如果您可以控制后台进程,我认为直接将其发射到FluxSink
中可能更好?
我正在考虑类似以下的使用情况:
- 监视机器学习过程的进度
- 将游戏世界状态更新发送给玩家
- 聊天室/团队协作软件
- ...