java - Spring 集成和响应式(Reactive) WebSockets

标签 java spring websocket spring-integration spring-websocket

Spring 集成提供了非响应式(Reactive)入站/出站 WebSocket 适配器,简单地说,它通过内部容器将 session 与 id 关联起来,您对消息进行一些处理,在出站时,它检查消息头中的 session id,并通过那次 session 。

现在,随着 Spring 通过 org.springframework.web.reactive.socket.WebSocketSession 和其他类提供响应式(Reactive) WebSocket 支持,我想知道在响应式(Reactive) WebSocket 堆栈的 channel 适配器方面是否也有类似的支持。

如果没有,是否有任何常见的模式/实践,如何将响应式 WS 与 spring 集成消息流集成?

最佳答案

此功能尚未被调用,因此我们还没有考虑此事。

请查看我的 SandBox 。这是针对当前情况我能提出的最好建议。

我们只是遵循标准 Spring WebFlux 建议来实现 WebSockets 解决方案。因此,我们有一个具有适当 URL 映射的 WebSocketHandler 实现。该实现只是将 Fluxsession.receive() 转发到动态注册的 IntegrationFlow 中。然后,该流程转换为用于 session.send() 的响应式 Publisher

我相信还可以使用许多其他方法,例如使用来自此 handle(WebSocketSession) impl 的 FluxMessageChannel bean 及其 subscribeTo()Flux 桥接到预定义中整合流程。或者从 doOnNext() 进行简单的 @MessagingGateway 调用。

不过,不确定 session.send() 是否可以在下游独立使用(需要播放),但您可以在示例中看到我如何传播 WebSocketSession > 进入 MessageHeaders 以使其能够在集成流程中进行访问。

关于java - Spring 集成和响应式(Reactive) WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52291206/

相关文章:

spring - Spring Data JPA中@Modifying方法的返回值是什么意思

java - Spring 4.0 与 Java JDK 版本 7 的兼容性

javascript - node.js websocket发送自定义数据

node.js - 如何将新的 SSL 证书和 key 注入(inject)正在运行的 Node http.Server?

java - Gridworld 在列表中查找最近的位置

java - 为什么只有我们尝试添加的最后一个值重复存储在数组列表中

java - hibernate 序列不存在

javascript - 发出的事件是否会产生大量负载,即使它们没有被监视?

java - Android - 将 TXT 文件作为电子邮件附件发送失败 ("Couldn' t 发送附件")

java - 如何在Java中提取CSV文件的部分文件名