首页 > 解决方案 > 将 Java/Kotlin 对象发送到 RSocket 路由

问题描述

@MessageMapping我已经使用 Spring 的 RSocket 支持设置了端点,并使用RSocketRequester. 这个流程运行良好,因为 Spring 为我们处理了一堆低级的东西。

现在,我想要某种 UI 来显示我正在使用的任何数据,并通过提到的@MessageMapping端点对该数据进行任何 UI 更新。问题是我不知道如何使用rsocket-javarsocket-kotlin库将完整的 Java/Kotlin 对象(作为 JSON)发送到我的端点。由于我必须同时发送数据和元数据,并且元数据被编码,因为ByteBuf我必须将 JSON 编码为ByteBuf,但它涉及到端点都搞砸了,它不能被反序列化。

我也尝试过发送原始字符串值,它也涉及到端点都搞砸了(一堆非 UTF 字符)。对于数据 mime 类型,我都尝试过,但两者都APPLICATION_JSON没有TEXT_PLAIN

另外,我想我做错的任何事情都与 Java/Kotlin 库没有严格的关系,但可以应用于任何其他现有的 RSocket 库(Go、Rust、JS 等)

标签: javaspringkotlinrsocket

解决方案


如果您使用的是 rsocket-kotlin 客户端(不是在 spring-boot 上构建),那么您可以从https://github.com/rsocket/rsocket-cli/blob/master/src/main/kotlin/io/复制代码rsocket/cli/Main.kt

它为路线构建元数据

    this.route != null -> {
      CompositeMetadata(RoutingMetadata(route!!)).toPacket().readBytes()
    }

推荐阅读