Skip to main content

内置与可选的 Handler

介绍

框架提供了一些 Netty Handler,开发者可以根据业务选择安装与配置。

NameDescriptionTags
CmdCacheHandler游戏对外服缓存。

默认内置

智能卸载

CmdCheckHandler路由是否存在检测。

默认内置

SocketCmdAccessAuthHandler路由访问验证。

默认内置

SocketIdleHandler心跳处理。

默认内置

SocketRequestBrokerHandler负责把游戏端的请求转发给 Broker(游戏网关)。

默认内置

SocketUserSessionHandler管理 UserSession。

默认内置

WebSocketVerifyHandlerWebSocket 连接前的 token 验证。

默认内置

智能卸载

HttpRealIpHandler获取玩家真实 ip,通常用在游戏服务器使用了 nginx 代理的场景。

按需添加

智能卸载

SimpleLoggerHandler触发异常、断开连接时打印 log 。

默认内置

可配置开关

Tags 说明

  • 默认内置:默认已经配置到游戏对外服中。
  • 智能卸载:已经使用过,但后续不会用到时,或者一开始就用不上时,会自动从 ChannelPipeline 中移除。
  • 按需添加:默认没有配置到游戏对外服中,如有需要,开发者可按需添加到游戏对外服中。
  • 可配置开关:提供了相关开关配置,根据配置决定是否生效。

获取玩家真实 ip

我们可以通过 HttpRealIpHandler 来获取玩家真实 ip,以下是游戏对外服扩展部分的代码。

public class MyExternalServer {
...
public ExternalServer createExternalServer(int externalPort) {
DefaultExternalServerBuilder builder = ...

builder.setting().setMicroBootstrapFlow(new WebSocketMicroBootstrapFlow() {
@Override
protected void httpHandler(PipelineContext context) {
super.httpHandler(context);

context.addLast("HttpRealIpHandler", new HttpRealIpHandler());
}
});

return builder.build();
}
}

nginx 相关配置

proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection "Upgrade";
# 将客户端的 Host 和 IP 信息一并转发到对应节点
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host
tip

nginx 配置,由热心市民提供 贡献者:zzzzzZZZZZ

SimpleLoggerHandler

ExternalGlobalConfig.enableLoggerHandler = true;