0
我正在用Java編寫一個遊戲服務器,我正在使用Netty 3.6.2。遊戲服務器不應該接受任何HTTP請求,因爲它們只是處理遊戲客戶端數據(純粹是TCP上的字節)。當我在Chrome中加載http://server-ip:game-servers-port時,我使用遊戲的握手數據包下載了一個文件(這不應該發生)。在Netty中禁用HTTP協議請求?
我綁定到遊戲服務器的端口,像這樣:
ChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool());
clientAcceptor = new ServerBootstrap(factory);
clientAcceptor.setOption("child.tcpNoDelay", true);
clientAcceptor.setOption("child.keepAlive", false);
clientAcceptor.setPipelineFactory(() -> Channels.pipeline(new PacketDecoder(), new ClientHandler()));
clientAcceptor.bind(new InetSocketAddress(Configurations.CHANNEL_GAME_PORT));
而且我如果傳入的請求是使用過程中一個SimpleChannelHandler請求,像這樣
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
// Encryption key code.
Packets.sendHello(ctx.getChannel(), ivRecv, ivSend);
ctx.getChannel().setAttachment(client);
}
我該如何去解讀HTTP協議?
編輯:我也應該說,它還應該在通道連接上阻止任何FTP,WebSocket等協議(基本上不是遊戲的協議)。
HTTP協議詳細介紹在它的RFC https://tools.ietf.org/html/rfc2616 –