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