【COCOS2DX-遊戲開發之二六】 手遊短連線
手遊採用短連線,好處自然不言而喻,所謂的短連線就是隻有需要和伺服器通訊的時候才連線伺服器,通訊完畢就斷開連線,我叫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的訊息時,才算訊息成功。其餘的像沒有網路,連線失敗,連線超時,接收超時等等錯誤狀態,需要提示玩家是否重發訊息,玩家選擇重發訊息,則在後臺重發最後一個傳送的訊息
短連線我也是剛接觸,如果有什麼錯誤的地方,歡迎大家指正,謝謝
轉自:http://blog.csdn.net/teng_ontheway/article/details/17999177
相關文章
- JAVA之長連線、短連線和心跳包Java
- 菜鳥學網路之 —— 長連線和短連線
- 長連線和短連線
- 長連線與短連線
- 長連線和短連線的使用
- http的長連線和短連線HTTP
- HTTP長連線和短連線原理淺析HTTP
- 【轉載】通訊長連線與短連線
- http長短連線和長短輪詢HTTP
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- HTTP長連線、短連線究竟是什麼?HTTP
- HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- SQLNET.EXPIRE_TIME引數—之防火牆短連線SQL防火牆
- Mysql關於長連線短連線優劣比較MySql
- 談談HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- Luat例項教程:tcp短連線TCP
- 一文讀透HTTP的長連線和短連線HTTP
- 輪詢、長輪詢、短連線、長連線區別對比
- 短連線 引起的 library cache lock
- [場景設計]短連線服務
- Socket程式設計-長連線與短連線,心跳(keep-alive)程式設計Keep-Alive
- 學習連連看 連線線之謎+道具的使用
- Http 和TCP的關係,TCP長連線和短連線有什麼區別?HTTPTCP
- 一個好用的短連線服務,mark備用
- python用兩種方法實現url短連線Python
- MySQL之連線查詢MySql
- Spark連線MongoDB之ScalaSparkMongoDB
- mysql之使用SSL連線MySql
- 論文中常用的轉折、連線詞跟短語
- Java遊戲開發——連連看Java遊戲開發
- pythonsocket程式設計之三:長連線、短連線以及心跳(轉藥師Aric的文章)Python程式設計
- 推薦幾個最新的騰訊URL短網址以及新浪TCN短連線的API介面API
- 碳酸鋰 短線
- Transformation之JE(連線消除)【八】ORM
- 處理方塊之間的連線線
- 內連線、左連線、右連線
- 如何提高Linux系統應對短連線的負載能力Linux負載
- 鐵礦石 短線