游戏中的CHeartBeat (心跳机制)
来源:互联网 发布:java gps漂移过滤算法 编辑:程序博客网 时间:2024/06/05 15:49
CHeartBeat是一种短连接,由于游戏不是时时性的,不需要太过一直连接,所以采取短连接的机制,cheartBeat
在刚刚登陆的时候,
ngHttpClient::HandleUpdate(int32 deltaMS)
{
ParseResponse(timestamp, pHash->Get("data"));
}
向服务器发请求时间戳到了,接收请求,case ReqHeartBeat:
{CFunGame::GetInstance()->ParseHeartBeat(pData);
break;
}
ParseHeartBeat中
void CFunGame::ParseHeartBeat(void* pData) {
if (pData == NULL ) return;
if (!m_heartBeat.IsStarted()) { //游戏就开始了心跳处理
return;
}
m_player.ParseHeartBeart(pData); //cplayer的parseHeartBeat 更新player中的数据
}
一个心跳的时间是30s,也就是每隔30会向服务器发送请求,来更新玩家信息,以此来实现游戏短连接
其中,CHeartBeat中有虚函数OnReceiveResponse 对某个界面设置监听之后,将这个类加入CHeartBeatListener监听中去,这样,在每次心跳刷新时,就可以调用到这个函数,在被监听的页面也可以时时更新自己想要在这个页面也想要更新的数据,以此来让玩家感觉这是在时时更新的。
停止心跳的地方:
退出游戏
游戏reuse 弹出的时候
玩家账号被封了
问题:cfungame中是如何parseheartbeat
CHeartBeat中,当一个心跳结束的时候,会SendHeartBeat();
在此函数中 CHTTPCLIENT->RequestHeartBeat(m_lastHeartBeat);
int32 CHttpClient::RequestHeartBeat(int64 timestamp)
{
m_reqType = ReqHeartBeat;ngJsonHash *pHash = DNEW ngJsonHash();
pHash->Set("playerId", PLAYERID);
pHash->Set("timestamp", timestamp); //时间戳就是向服务器发送上一次心跳结束的时间
pHash->Set("messageId", PLAYER->GetlastMailId());
pHash->Set("bulletinId", PLAYER->GetLastBulletinId());));
}
----
0 0
- 游戏中的CHeartBeat (心跳机制)
- Hadoop中的心跳机制
- 软件设计中的心跳机制
- 网络通信中的心跳机制的实现
- 网络通信中的心跳机制的实现
- LINUX C网络编程中的心跳机制
- Linux Socket编程中的心跳机制
- LINUX C网络编程中的心跳机制
- 网络通信中的心跳机制的实现!
- Linux Socket编程中的心跳机制
- Linux Socket编程中的心跳机制
- LINUX C网络编程中的心跳机制
- 心跳机制
- 心跳机制
- 心跳机制
- 心跳机制
- 心跳机制
- 心跳机制
- 常用JS总结2-学习笔记
- jQuery 入门教程(4): Events
- Merge Two Sorted Lists
- 20140112技术分享会议总结
- 自己动手写路由器之ARP数据包的传输
- 游戏中的CHeartBeat (心跳机制)
- DevExpress的GridControl的行编辑
- 【深入Java虚拟机】之三:类初始化
- CxImage类库
- Android 源码目录及其作用
- message sent to deallocated instance 除錯
- 【深入Java虚拟机】之四:类加载机制
- android activity动画小记
- jQuery 入门教程(5): 显示/隐藏内容