GoNet项目学习笔记(二)
2015-07-14 22:17 量子与唯心 阅读(265) 评论(0) 编辑 收藏 举报二)Game Server模块启动分析
主函数入口位于src/agent/main.go,启动流程为:
1. 按顺序初始化导入模块cfg;geoip, db模块等等…
2. 启动HUB客户端,连接HUB Server
3. 启动signal routine
1) 处理SIGHUP信号,加载程序配置
2) 处理SIGTERM信号,程序退出时关闭并等待所有GS的Agent退出
4. 启动Sys routine
1) 处理系统消息
2) 定期强制内存回收
5. 启动统计客户端,连接到Stats Server。
6. 启动TCP监听,接收客户端(Player)连接,每个客户端用一个routine处理。
流程图:
上图中,Session队列用来接收HubServer转发过来的其它GameServer的消息。GS在启动时HubClient会与HS建立连接同时守护该连接
(src/agent/hub_client/hun_client.go ->_receiver()),接收HS发过来的消息。当HubClient收到HS的消息时(_receiver()函数),会根据IPCObject查找到对应的Session队列(src/agent/hub_client/hun_client.go ->_deliver())。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 如何不购买域名在云服务器上搭建HTTPS服务