最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Cocos Creator網(wǎng)絡(luò)游戲開(kāi)發(fā)中的短連接HTTP和長(zhǎng)連接Websocket

2021-11-04 18:08 作者:unity小能手  | 我要投稿

在游戲行業(yè)中,網(wǎng)絡(luò)游戲相比單機(jī)游戲的市場(chǎng)份額要大很多。而網(wǎng)絡(luò)游戲的用戶交互性、用戶粘性會(huì)好很多。所以,絕大部分游戲都需要進(jìn)行網(wǎng)絡(luò)連接來(lái)存儲(chǔ)數(shù)據(jù)、實(shí)現(xiàn)玩家之間互動(dòng)等。在項(xiàng)目中,主要使用兩種網(wǎng)絡(luò)操作,短連接http和長(zhǎng)連接websocket,下面就對(duì)這兩種進(jìn)行詳細(xì)說(shuō)明。

一、?短連接http

HTTP:超文本傳輸協(xié)議。

在這里,使用XMLHttpRequest對(duì)象開(kāi)發(fā)客戶端,常用方法和屬性如下:

1、open() 與服務(wù)器連接,創(chuàng)建新的連接請(qǐng)求。

2、send() 向服務(wù)器發(fā)送請(qǐng)求。

3、abort()退出當(dāng)前請(qǐng)求。

4、readyState屬性,提供當(dāng)前請(qǐng)求的狀態(tài),其中4表示準(zhǔn)備就緒。

5、status屬性,提供當(dāng)前的HTTP請(qǐng)求狀態(tài)碼,其中200表示請(qǐng)求成功。

6、responseText屬性,服務(wù)器返回的請(qǐng)求響應(yīng)文本。

7、onreadystatechange屬性,設(shè)置回調(diào)函數(shù)。

其中,open和send函數(shù),以及onreadystatechange屬性是http請(qǐng)求的關(guān)鍵。

open函數(shù)有5個(gè)參數(shù)可以使用。(method,url,async,user,password)

Method:是指發(fā)送請(qǐng)求的類(lèi)型,一般為GET或POST。

Url:要請(qǐng)求的鏈接url。

Async:是否為異步請(qǐng)求,該參數(shù)可選,默認(rèn)是true。

User:如果該請(qǐng)求需要身份驗(yàn)證,這里指定用戶名,無(wú)默認(rèn)值。

Password:如果該請(qǐng)求需要身份驗(yàn)證,這里指定密碼,無(wú)默認(rèn)值。

1. XML HttpRequest中5種就緒狀態(tài)

0:請(qǐng)求沒(méi)有發(fā)出,在調(diào)用open()函數(shù)之前為該狀態(tài);

1:請(qǐng)求已經(jīng)建立但還沒(méi)有發(fā)出,在調(diào)用send()函數(shù)之前為該狀態(tài);

2:請(qǐng)求已經(jīng)發(fā)出正在處理中;

3:請(qǐng)求已經(jīng)處理,響應(yīng)中通常有部分?jǐn)?shù)據(jù)可用,但是服務(wù)器還沒(méi)有完成響應(yīng);

4:響應(yīng)已經(jīng)完成,可以訪問(wèn)服務(wù)器響應(yīng)并使用它。

2. 常見(jiàn)的HTTP狀態(tài)碼

401:表示所訪問(wèn)數(shù)據(jù)禁止訪問(wèn);

403:表示所訪問(wèn)數(shù)據(jù)受到保護(hù);

404:表示錯(cuò)誤的URL請(qǐng)求,表示請(qǐng)求的服務(wù)器資源不存在;

200:表示一切順利;

如果就緒狀態(tài)是4而且狀態(tài)碼是200即可處理服務(wù)器的數(shù)據(jù)。相信做過(guò)Web開(kāi)發(fā)的,對(duì)這一塊一定非常熟悉。有問(wèn)題的同學(xué),也不用擔(dān)心首先必須熟練了解上面知識(shí)點(diǎn)。然后我們來(lái)看代碼。

3. GET請(qǐng)求

4. POST請(qǐng)求

總體來(lái)看就很清晰了,首先得到XMLHttpRequest實(shí)例,然后通過(guò)open打開(kāi)鏈接,之后監(jiān)聽(tīng)下連接狀態(tài)變化,在readyState=4而且status=200時(shí),連接成功,這時(shí)候就可以得到網(wǎng)絡(luò)的數(shù)據(jù)了。最后別忘了,要send一下。注意:如果請(qǐng)求數(shù)據(jù)是string類(lèi)型,需要轉(zhuǎn)為JSON,然后就可以當(dāng)做表來(lái)用了。

當(dāng)然,post請(qǐng)求和get請(qǐng)求有些許區(qū)別,比如參數(shù),設(shè)置頭等。

另外,為改善用戶體驗(yàn),我們要對(duì)請(qǐng)求超時(shí)進(jìn)行相應(yīng)處理,代碼如下。

5. 網(wǎng)絡(luò)請(qǐng)求超時(shí)處理

弱聯(lián)網(wǎng)的游戲可以采用http連接,如果游戲中需要頻繁交互、實(shí)時(shí)獲取數(shù)據(jù)、狀態(tài)同步等,我們一般采用長(zhǎng)連接WebSocket。

二、?長(zhǎng)連接websocket

具體WebSocket的使用可以參考如下網(wǎng)址,在此不在贅述。

developer.mozilla.org/z


Cocos Creator網(wǎng)絡(luò)游戲開(kāi)發(fā)中的短連接HTTP和長(zhǎng)連接Websocket的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新沂市| 福贡县| 胶州市| 吉隆县| 于都县| 宜州市| 大城县| 马山县| 永泰县| 呼图壁县| 南开区| 陆丰市| 阿克苏市| 丰县| 平顺县| 弋阳县| 玛纳斯县| 富锦市| 南雄市| 高陵县| 海淀区| 光山县| 射洪县| 金沙县| 黄浦区| 乐安县| 兰坪| 崇信县| 达日县| 阳高县| 南木林县| 汝南县| 宜阳县| 黄冈市| 新邵县| 安顺市| 合作市| 凤城市| 中卫市| 吴桥县| 洛川县|