【COCOS2DX-游戏开发之二六】 手游短连接

来源:互联网 发布:互盾数据恢复注册机 编辑:程序博客网 时间:2024/05/20 09:46

 

手游中的短连接

手游采用短连接,好处自然不言而喻,所谓的短连接就是只有需要和服务器通讯的时候才连接服务器,通讯完毕就断开连接,我叫MT也采用了短连接的方式

 

弊端

1.      每次发送消息的连接服务器和断开服务器也是一笔不小的开销

2.      不适合那些大量即时信息的手游

 

优点

1.      只在需要同步的时候才和服务器连接发送数据, 减少了服务器的压力

2.      网络不给力的时候也可以玩,数据发送失败可以手动重发,有限的数据足以保证非WIFI的网络也可以游戏

 

短连接的流程图

流程图参考:流程图/短连接流程图.edx

 

 

短连接的消息处理


流程图参考:流程图/短连接数据发送.edx

 

注意:

1.两个MsgQueue和客户端服务器消息状态state都是临界区资源,主线程MainThread和消息线程MsgThread不可同时访问

2.发送消息:MainThread 向MsgQueue中push消息,消息线程从队列中pop消息 接收消息和发送消息相反

3.我是用的是cosos2dx引擎,因为不支持多线程,所以消息线程MsgThread中获得的消息一定要压入到消息队列中,主线程MainThread从消息队列MsgQueue中获取消息进行处理,MsgThread不能涉及到任何Cocos2dx的操作,由主线程MainThread来更新界面

4.连接服务器,向服务器发送数据和接收服务器回馈的消息都是在消息线程MsgThread中处理,这样主线程就可以播放等待动画,不会出现连接服务器过慢导致主线程卡死的情况

5.由于是短连接,规则就是:主线程一次只能push一个消息,egmsgID=0x500  然后主线程处于等待消息状态,不断的获取判断消息线程msgThread返回的状态state,只有收到服务器回馈的msgID=0x500的相同ID的消息时,才算消息成功。其余的像没有网络,连接失败,连接超时,接收超时等等错误状态,需要提示玩家是否重发消息,玩家选择重发消息,则在后台重发最后一个发送的消息


短连接我也是刚接触,如果有什么错误的地方,欢迎大家指正,谢谢

1 1
原创粉丝点击