首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java/Kotlin对象发送到RSocket路由

将Java/Kotlin对象发送到RSocket路由
EN

Stack Overflow用户
提问于 2020-11-26 01:10:48
回答 2查看 101关注 0票数 1

我已经使用Spring的RSocket支持设置了@MessageMapping端点,并使用RSocketRequester对其进行了测试。这个流程工作得很好,因为Spring为我们处理了一堆低级的东西。

现在,我希望有某种UI来显示我正在处理的任何数据,并通过前面提到的@MessageMapping端点对这些数据进行任何UI更新。问题是我不知道如何使用rsocket-javarsocket-kotlin库将完整的Java/Kotlin对象(作为JSON)发送到我的端点。由于我必须同时发送数据和元数据,并且元数据被编码为ByteBuf,因此我必须将JSON编码为ByteBuf,但它到达端点时就完全混乱了,并且无法反序列化。

我也尝试过发送原始字符串值,它也到达了所有混乱的端点(一堆非UTF字符)。我已经为数据mime类型尝试过APPLICATION_JSONTEXT_PLAIN,但它们都不起作用。

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

EN

回答 2

Stack Overflow用户

发布于 2020-12-05 23:46:06

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

它使用为路径构建元数据

代码语言:javascript
复制
    this.route != null -> {
      CompositeMetadata(RoutingMetadata(route!!)).toPacket().readBytes()
    }
票数 1
EN

Stack Overflow用户

发布于 2020-11-26 01:39:36

我想我已经弄明白了。

我已经抓取了二进制编码的元数据,并借用了我在互联网上找到的JavaScript中的RSocket,它起作用了:)

因此,解决方案是使用路由元数据mime类型(我使用的是复合类型,因为我找到的示例就是使用它),然后可以像这样创建有效负载:

代码语言:javascript
复制
val json = "{}"
val route = "myawesomeroute"
DefaultPayload.create(<json>, "${route.length.toChar()}$route")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65009567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档