1

我正在 netty 中创建自己的 Flash 游戏服务器。我在端口 843 中使用 flash 策略服务器,在 8080 中使用游戏服务器端口......另外,我使用 zerodelimeter 进行成帧;但是,当我在 flash 客户端上接收消息时,我收到了两条消息而不是一条消息。第一条信息是我应该得到的真实信息;但是,第二个是空消息。如何避免在 netty 端收到第二条消息?

谢谢,

在下面,您可以查看我的 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' }) };
    }

}
4

1 回答 1

0

我认为您应该使用nul 分隔符而不是 0。这是一个提供 Flash 策略文件的netty 游戏服务器。策略服务器在 843 运行。下面粘贴的是相关的 spring 配置,这里是策略文件解码器供参考。

<!-- Configure the Flash policy server. By default it runs at 843 -->
<bean id="flashPolicyServer" class="org.menacheri.jetserver.server.netty.FlashPolicyServer"
    init-method="createServerBootstrap" destroy-method="stopServer">
    <property name="pipelineFactory" ref="flashPolicyServerPipelineFactory"></property>
    <property name="gameAdminService" ref="gameAdminService"></property>
    <property name="portNumber" value="${flash.policy.port}"></property>
</bean>

<!-- All the pipeline factory beans are now defined -->
<bean id="flashPolicyServerPipelineFactory" class="org.menacheri.jetserver.server.netty.FlashPolicyServerPipelineFactory">
    <lookup-method name="getFlashPolicyServerHandler" bean="flashPolicyServerHandler"/>
    <property name="timer" ref="hashedWheelTimer"></property>
</bean>
于 2012-06-07T18:21:42.067 回答