1
我正在用netty创建我自己的Flash游戏服务器。我在端口843中使用Flash策略服务器,在8080中使用游戏服务器端口...另外,我正在使用zerodelimeter进行成帧;但是,当我在Flash客户端上收到消息时,我收到了两条消息而不是一条消息。第一条信息是我应该得到的真实信息;然而,第二个是空的信息。我怎样才能避免在网络端收到第二条消息?Netty Flash XmlSocket消息接收错误
感谢,
在下面,你可以看看我的ChannelPipelineFactory ...
public class SocketServerPipelineFactory implements ChannelPipelineFactory {
public ChannelPipeline getPipeline() throws Exception {
PlayerController controller = PlayerController.createPlayerController();
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192,
zeroDelimiter()));
pipeline.addLast("decoder", new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast("encoder", new StringEncoder(CharsetUtil.UTF_8));
pipeline.addLast("handler", new SocketServerHandler(controller));
return pipeline;
}
public static ChannelBuffer[] zeroDelimiter() {
return new ChannelBuffer[] { ChannelBuffers.wrappedBuffer(new byte[] { '\0' }),
ChannelBuffers.wrappedBuffer(new byte[] { '\r', '\n' }) };
}
}
恐怕它没有工作。我试过null分隔符而不是“\ 0”;但是,flash xmlsocket对象并未触发消息接收事件。此外,我试过null分隔符和“\ 0”,导致两条消息,而不是一条消息。 –
您是否尝试过我已链接的解码器?您实际上可以解码并查看帧为什么具有额外的字节。这可能会提供一个线索。 – Abe