gpt4 book ai didi

java - 使用 netty 的 writeandflush() 向客户端发送 JSON 数据,显示无效的 JSON 类型

转载 作者:行者123 更新时间:2023-12-01 12:08:59 31 4
gpt4 key购买 nike

我正在使用 java 代码将 JSON 数据发送到 flash,因为我使用的是 netty 服务器 4.0.23。通过这种方式,我经常使用两种不同的数据发送给同一个客户端。我使用了channel.writeAndFlush()。到目前为止,一切都进展顺利,在客户端接收数据时,两个数据都会合并在一起并给出无效的 Json。

我跟踪了java中的发送数据,它的格式正确。在客户端接收时它变得无效。两个不同的 JSON 数据合并为一个 JSON 数据,从而出现 Invalid Json type 错误。如果我在两个数据之间放置计时器延迟,则客户端会正确接收数据。如何在发送时不应用数据之间的延迟的情况下接收正确的数据......

我使用了以下管道

pipeline.addLast(new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
pipeline.addLast(new StringDecoder());
pipeline.addLast(new StringEncoder());
pipeline.addLast("handler", new ServerHandler());

最佳答案

听起来您的客户端(接收方)没有正确处理接收到的 JSON 消息。 TCP 是流式协议(protocol),这意味着一侧的两次写入可以被视为另一侧的一次读取。例如,当服务器发送“A”和“B”时,客户端不会总是看到“A”和“B”,但有时会看到“AB”,这完全没问题。

为了处理这种情况,您需要“框架”消息。在 Netty 中通常通过插入帧解码器来完成。

在你的例子中,客户端是用Flash编写的,所以你最好简单地使用XMLSocket并让您的服务器使用 NUL (0) 字节分隔每个 JSON 消息。

如果您对装帧感兴趣,请阅读the Netty user guide .

关于java - 使用 netty 的 writeandflush() 向客户端发送 JSON 数据,显示无效的 JSON 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378991/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com