游戏服务器中使用Netty进行Http请求管理
背景
作为游戏服务器,无法避免与第三方系统交互。例如:登陆、充值、中台等,这些平台很多都是Web平台,提供http服务接口。这就需要游戏具备http访问功能。
解决方案
Netty实现异步http调用。文章来源:https://www.toymoban.com/news/detail-481467.html
原因:
效率:netty的多路复用技术,实现的异步http可以用很少的几个线程实现同时成百上千个http请求。文章来源地址https://www.toymoban.com/news/detail-481467.html
记录
- 准备
- 初始化EventLoopGroup,设置线程数
- 初始化Bootstrap
- 初始化SslContext,支持SSL
- 请求:get和post
- 通过URI解析url,获得port
- 创建get请求
- 构造QueryStringEncoder,作为http参数
- 构造DefaultFullHttpRequest,设置http版本和get方式
- header设置connect=close
- 创建post请求
- 构造DefaultFullHttpRequest,设置http版本和post方式
- header设置connect=close
- 构造HttpPostRequestEncoder,添加post参数
- 构造HttpRequest完成
- 复制基础Bootstrap#clone,并继续构造请求参数
- ChannelInitializer初始化,使用了netty提供的几个Handler:HttpClientCodec、HttpObjectAggregator
- 发起HTTP的connnect请求
- 在Connect的future事件监听,发送HttpRequest请求数据
- 返回数据,同步主线程
- HTTPResponse是在Netty的EventLoopGroup线程
- HttpClientAsyncCallback通过给主线程Port#addTask实现数据同步
- 返回可以序列化的数据结构AsyncHttpResult
注意事项
- 可以通过EventLoopGroup#schedule处理请求超时事件
- Handler#exceptionCaught的异常处理
到了这里,关于游戏服务器中使用Netty进行Http请求管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!