1. 程式人生 > >CocosCreator Http、WebSocket、SocketIO用法

CocosCreator Http、WebSocket、SocketIO用法

最近一直比較忙,沒有時間看看Creator,正好趁著今天有點空閒,研究了一下有關網路連線的部分。畢竟現在的遊戲單機的還是偏少,遊戲的生命週期中,用到的網路請求還是挺多的,正好就搞了個demo,要是存在問題,還請指出。

本人小白,沒有太過於深入研究,僅適用於新手,勿噴。

首先建立一個新的工程,取名為httpTest,進行介面佈局,效果如下:

 

在指令碼中將文字控制元件宣告,進行賦值,效果如下:

 

貼了兩張圖,其實都沒進入主題,下面就是對於每一種請求進行詳解。

在專案中,主要使用兩種網路操作,短連線http和長連線websocket,下面就對這兩種進行詳細說明。

HTTP

定義:自行百度(有問題問度娘,是個好習慣)

在這裡,使用XMLHttpRequest物件開發客戶端,下面瞭解一下它的屬性:

1open() 與伺服器連線,建立新的連線請求。

2send() 向伺服器傳送請求。

3abort()退出當前請求

4readyState屬性,提供當前請求的狀態,其中4表示準備就緒。

5status屬性,提供當前的HTTP請求狀態碼,其中200表示請求成功。

6responseText屬性,伺服器返回的請求響應文字。

7onreadystatechange屬性,設定回撥函式。

其中,opensend函式,以及onreadystatechange屬性是http請求的關鍵。

open函式有5個引數可以使用。(method,url,async,user,password)

method,是指傳送請求的型別,一般為GETPOST

url,要請求的連結url

async,是否為非同步請求,該引數可選,預設是true

user,如果該請求需要身份驗證,這裡指定使用者名稱,無預設值

password,,如果該請求需要身份驗證,這裡指定密碼,無預設值

XML HttpRequest中有5種就緒狀態:

10:請求沒有發出,在呼叫open()函式之前為該狀態

21:請求已經建立但還沒有發出,在呼叫send()函式之前為該狀態

32:請求已經發出正在處理中

43:請求已經處理,響應中通常有部分資料可用,但是伺服器還沒有完成響應

54:響應已經完成,可以訪問伺服器響應並使用它

常見的HTTP狀態碼如下:

401:表示所訪問資料禁止訪問

403:表示所訪問資料收到保護

404:表示錯誤的URL請求,表示請求的伺服器資源不存在

200:表示一切順利

如果就緒狀態是4而且狀態碼是200即可處理伺服器的資料

(以上這段貼上自http://blog.csdn.net/sinat_28338727/article/details/52804167

基礎知識瞭解完畢,下面開始擼程式碼:

先是get請求:

 

然後post請求:

 

其實總體看過來就很清晰了,首先得到XMLHttpRequest例項,然後通過open開啟連結,然後監聽下連線狀態變化,在readyState=4而且status=200時,連結成功,這時候就可以得到網路的資料了。最後別忘了,要send一下。PS:如果下發資料是string型別,需要轉下json,然後就可以當做表來用了。

當然,postget有些許區別,比如引數,設定頭等,總體感覺,不是很難理解吧。

順道說一下對於伺服器長時間不響應的處理,直接擼:

 

在搜尋資料的時候,遇到有人說跨域訪問問題,網路訪問的時候出現了No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.的報錯,這是因為瀏覽器不能跨域訪問,我們在服務端找到這個要請求的檔案:設定一下header

[php] view plain copy

<?php   

header("Access-Control-Allow-Origin : *");  

echo "I Love you"  

?>  

這樣,就成功返回了資料?但是,必須改編碼為UTF-8 rom格式!

但我沒有遇到過,如果你遇到了,那就恭喜你了。

接下來是WebSocket,請移步https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket,這片文件詳細的介紹了websocket的內容。

學習好了,準備擼程式碼:

 

如果你閱讀了上面的連結內容,那我寫的就不難理解了,所以就不詳細說了。

最後SocketIO也說一下,但是我沒找到比較好的詳解教程,https://www.cnblogs.com/lxxhome/p/5980615.html這一篇可以看看。

 

其實後面兩種很類似,都是建立連結,然後監聽。

最終,執行成功的效果應該是這樣的:

 

Ok,時間緊迫,就先寫這麼多了。

下面,又到了偉大的廣告時間,想要獲得原始碼,可以去https://download.csdn.net/download/qq_16224121/10301553下載,同樣的需要兩個積分,如果不想發費,那麼請加入技術交流群,群裡會有原始碼下載:221725135,歡迎大家加入遊戲開發群,一起討論,一起研究。