Spring 5 Reactive WebSockets:推荐使用

her*_*man 8 spring reactive-programming websocket spring-webflux

我一直在学习Spring 5 WebFlux,反应式编程和websockets.我看过Josh Long的Spring Tips:Spring Framework 5的Reactive WebSockets.其通过WebSocket连接从服务器将数据发送到客户端的代码使用一个Spring集成IntegrationFlow一个发布到PublishSubcribeChannel其中有一个自定义MessageHandler订阅了它,是以消息时,它转换为一个对象,然后将其转化成JSON和发射到FluxSink从提供给Flux.create()的回调函数,用于发送给WebSocketConnection.

我想知道是否使用IntegrationFlowPublishSubscribeChannel是将事件从后台进程推送到客户端的推荐方法,或者在这个特定示例中是否更方便(监视文件系统).我想如果你能控制后台进程,你可以让它FluxSink直接发射吗?

我正在考虑类似于以下的用例:

  • 机器学习过程,其进度受到监控
  • 更新发送给玩家的游戏世界状态
  • 聊天室/团队协作软件
  • ...

Bri*_*zel 1

由于这个问题,Spring 引入了RSocket 支持- 你可能会认为它就像 Spring MVC 中存在的 WebSocket STOMP 支持,但更强大和高效,支持协议级别的反压和高级通信模式。

对于您提到的用例,我建议使用 RSocket,因为您将获得强大的编程模型以及@MessageMappingSpring 中所有预期的支持(JSON 和 CBOR 的编解码器、安全性等)。