1. 程式人生 > >cocos-Lua請求服務端資料(XMLHttpRequest小積累)

cocos-Lua請求服務端資料(XMLHttpRequest小積累)

在公司看視訊回放時,我就在想,這麼神奇,這到底是怎麼實現的?

後來看了一下程式碼,發現有時候你覺得非常不可思議的事,其實很簡單

其實也就是服務端把相應事件的發給客戶端的資料儲存下來,到客戶端要回放了,就去服務端下載資料,再把遊戲過程的流程自動跑一遍

其中就用到了XMLHttpRequest

XMLHttpRequest中提供GET和POST兩種http請求方式,

返回資料型別有以下幾種:

cc.XMLHTTPREQUEST_RESPONSE_STRING = 0  -- 返回字串型別
cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -- 返回位元組陣列型別
cc.XMLHTTPREQUEST_RESPONSE_BLOB   = 2 -- 返回二進位制大物件型別
cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 -- 返回文件物件型別
cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 -- 返回JSON資料型別

local xhr = cc.XMLHttpRequest:new()	--http請求
	xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON	--請求型別
	local url = string.format("http://%sjson/%s.json", NetConfig_getInstance():getHttpDomain(), videoId) --服務端儲存資料的位置與名稱
	xhr:open("GET", url)
	local function onResponse()
		local str = xhr.response	--獲得返回資料
		tools.saveVideoJsonFile(videoId, str)	--儲存資料到本地
		local playInfo = json.decode(str)	--解析json檔案
		startPlay(playInfo)	--傳遞資料進入下一步操作,開始進行回放
	end
	xhr:registerScriptHandler(onResponse)	--註冊指令碼方式回撥
	xhr:send()	--傳送

在程式碼中我們可以看見我們從url的地址裡獲取資料,之後儲存到本地,再解析運用

在這裡是有服務端儲存資料為json格式資料,在客戶端請求獲得資料,之後再進行解析

--儲存本地json視訊檔案,傳參是該視訊檔名字和json字串,直接返回的是table
function tools.saveVideoJsonFile(fileName, content)
	local pathToSave = cc.FileUtils:getInstance():getWritablePath()
	local f = io.open(pathToSave .. fileName .. ".json", "w")
	if f then
		f:write(content)	--寫入資料
		f:close()
	end
end
上面程式碼為儲存從服務端中下載下來的資料,f檔案存在就把資料寫進去

相關推薦

cocos-Lua請求服務資料(XMLHttpRequest積累)

在公司看視訊回放時,我就在想,這麼神奇,這到底是怎麼實現的? 後來看了一下程式碼,發現有時候你覺得非常不可思議的事,其實很簡單 其實也就是服務端把相應事件的發給客戶端的資料儲存下來,到客戶端要回放了,就去服務端下載資料,再把遊戲過程的流程自動跑一遍 其中就用到了XMLHtt

在 Angular6 中使用 HTTP 請求服務資料的步驟詳解

第一步 準備好api介面地址, 例如 https://api.example.com/api/ 第二步 在根元件 app.components.ts 中引入 HttpClientModule 模組。 ? 1 2 3 4 5 6 7

在 Angular6 中使用 HTTP 請求服務資料

第一步 準備好api介面地址, 例如 https://api.example.com/api/ 第二步 在根元件 app.module.ts 中引入 HttpClientModule 模組。 // app.module.ts import {HttpClientMo

第十章:vue2中axios請求服務資料

中文文件 一、關於axios的安裝 1、利用npm安裝npm install axios --save 2、利用bower安裝bower install axios --save 3、

HttpClient請求服務介面資料Get與Post請求

public static void main(String[] args) { //String url = "http://10.3.1.32/proxy_services/MDMConsumerProxyService"; String url = "http

模擬高併發請求服務(python gevent)

專案背景:對web後端進行高併發的請求,簡單測試服務框架的效能 解決思路:利用python的多執行緒,但python的多執行緒有點“雞肋”, 個人選擇使用簡潔輕便gevent。 解決方案:採用gevent非同步 + requests 進行高併發請求 import time import

基於TCP的客戶服務資料傳輸

功能描述: 從客戶端向服務端傳送字串,服務端接收之後,把字串轉成大寫,並返回給客戶端, 客戶端程式碼 import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea

用nodejs搭建一個本地伺服器,以供本地介面獲取服務資料

1、首先下載安裝好nodejs 64位的nodejs5.6.0下載地址:  5.6.0 nodejs,根據提示安裝在自己的電腦上即可 2、安裝好了,開啟cmd視窗,輸入命令:npm -v 檢驗nodejs是否安裝成功,如果出現以下介面則說明安裝成功了 3、輸入命令 

java服務微信程式支付demo

一丶項目錄結構 demo下載地址 小程式支付demo下載 二丶實現步驟 1.在小程式中獲取使用者的登入資訊,成功後可以獲取到使用者的程式碼值 2.在使用者自己的服務端請求微信獲取使用者的OpenID介面,成功後可以電子雜誌使用者的OpenID的值 微信

服務微信程式支付/退款詳解

賬號支援:小程式appid,小程式secret,商戶號mchid,商戶secret 服務端和微信支付系統主要互動: 1、小程式內呼叫登入介面,獲取到使用者的openid,api參見公共api【小程式登入API】 前端呼叫介面wx.login() 獲取臨時登入憑

Spring Boot 服務資料-實現資料校驗功能 、資料校驗、解決異常、其他校驗規則。

1、資料校驗 實體類: Controller層:  html 檔案:      2、資料校驗 Controller層:1、在Controller中找到資料校驗的方法 對誰@Valid就是校驗誰。                        2、把

服務效能優化

資料交換方式並非類似 TCP 的資料流,所以,沒有必要把服務間的通訊形式強行統一為單個數據塊。最合適做程序內通訊的方式就是 C 結構。訊息傳送方和接收方都處於同一個程序內時,它們一定可以識別同一個 C 結構對映的記憶體塊,不必考慮記憶體佈局,位元組序等問題。在這個層面上使用

vue使用axios非同步請求資料的使用

Vue 原本有一個官方推薦的 ajax 外掛 vue-resource,但是自從 Vue 更新到 2.0 之後,官方就不再更新維護 vue-resource,並推薦axios,目前主流的 Vue 專案,都選擇 axios 來完成 ajax 請求。使用方法:方案一:改原型1.安

android客戶與javaweb服務通訊——登入demo的啟示

前兩天討論了javaweb專案連線mysql資料庫的注意事項,是因為剛剛租了一臺ecs雲伺服器,在上面搭載mysql要比Oracle方便很多,今天我們來探討一下android端與服務端通訊的方式方法,更多的是注意事項。 先說服務端,如果查詢成功,就返回一個由物件轉換而成的j

微信程式向服務請求資料

荊軻刺秦王 微信的文件有說明: 具體用法: getdata: function () {//定義函式名稱 var that = this; // 這個地方非常重要,重置data{

通用JS工具類封裝——網路資料請求功能、獲取服務介面 url、引數功能

程式碼片段 'use strict'; var conf = { serverHost = '' }; var _mm = { //網路請求功能 request : function(param){ var _this = this;

微信程式服務請求必須HTTPS 微信程式服務請求必須HTTPS

微信小程式服務端請求必須HTTPS SSL證書的作用 HTTP明文協議是不安全的傳輸協議,無法進行伺服器端真實身份校驗,也不能為傳輸資料提供加密保護,通過HTTP協議傳輸的資料時刻處在被竊聽、篡改、冒充的風險

微信程式正式上線,服務請求必須HTTPS

1月9日凌晨微信小程式正式上線,首批上線的小程式有三百多家,使用者需要將微信更新至iOS6.5.3版本或Android6.5.3版本進行體驗。 微信小程式自9月份首次開啟內測就開始在圈內刷屏了,不需要下載安裝,“用完即走”的理念,使其被譽為“APP殺手”。微信龐大社交

openresty lua zlib整合安裝 讓lua支援解壓服務壓縮過的資料

來源於http://www.tuicool.com/articles/EZZZFn3的整理 openresty在編譯安裝的時候就加入了lua支援,所以無需再對nginx進行改造。但lua下對gzip進行解壓,需要藉助一個庫:lua- zlib(https://githu

ajax請求返回xml資料(含服務程式碼)

ajax技術目前已經被jquery包裝的比較完美,但自己使用的地方仍然很多,所以需要自己能夠自定義ajax方法。 以下是從前端ajax發出請求,後臺響應返回xml資料,ajax接收並處理的完整過程,例