我使用java代码将JSON数据发送到flash,因为我使用的是netty server 4.0.23。 通过这种方式,我使用两个不同的数据经常发送到同一个客户端。我使用了channel.writeAndFlush()。到目前为止,一切都很顺利,而在客户端接收数据时,两个数据合并在一起,并提供无效的Json。
我在java中跟踪发送数据的格式正确。在客户端接收时无效。两个不同的JSON数据合并为单个JSON数据,因此发生了无效的Json类型错误。如果我在两个数据之间放置定时器延迟,则在客户端正确接收数据。如何在发送数据时不应用数据之间的延迟来接收正确的数据.....
我使用了以下管道
pipeline.addLast(new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
pipeline.addLast(new StringDecoder());
pipeline.addLast(new StringEncoder());
pipeline.addLast("handler", new ServerHandler());
答案 0 :(得分:1)
听起来您的客户端(接收部分)无法正确处理收到的JSON消息。 TCP是流协议,这意味着在一侧的两个写入可以被视为另一侧的一个读取。例如,当服务器发送" A"和" B",客户不会总是看到" A"和" B"但有时会看到" AB",并且它完全没问题。
为了应对这种情况,你需要构建框架'一个消息。它通常通过插入成帧解码器在Netty中完成。
在您的情况下,客户端是用Flash编写的,因此您最好只使用XMLSocket并让服务器用NUL(0)字节分隔每个JSON消息。
如果您对框架感兴趣,请阅读the Netty user guide。