游戏使用socket和http通信,如果socket没有连通就使用http。ClientCommand类继承自类CCObject,里面保存了msgpack::sbuffer类变量sbuf,int16_t型变量m_nCommandId,构造函数只是给m_nCommandId赋值。游戏里面的每个操作都封装成一个CCmd类,比如CCmd100,这个类继承自ClientCommand,创建对象的时候把100赋值给了m_nCommandId。然后set数据,然后调用对象的excute函数,msgpack::pack(sbuf, *this);ClientSocket->sendMessagePack(sbuf, m_nCommandId)。ClientSocket类继承自ODSocket和CCObject,在游戏启动的时候,运行startConnect函数连接socket。如果连接不上就sleep_time(5000);reConnect();一直循环。
sendMessagePack的时候,如果socket连接了,通过socket发送msgpack格式数据,如果没有连接上,则调用sendHttpMessagePack通过HTTP发送msgpack格式数据。