网上教学网站建设,python创建网站,wordpress修改永久链接后无法访问,凯杰建设有限公司官方网站引子
最近的一个项目中由于某个需求#xff0c;需要多次请求后台接口数据#xff0c;就自己封装了一下网络请求的队列#xff1b;刚刚好给大家分享一下#xff0c;互相交流学习 简述
Unity 的网络请求队列是由 UnityWebRequestQueue 类实现的。这个类继承自 MonoBehaviou…引子
最近的一个项目中由于某个需求需要多次请求后台接口数据就自己封装了一下网络请求的队列刚刚好给大家分享一下互相交流学习 简述
Unity 的网络请求队列是由 UnityWebRequestQueue 类实现的。这个类继承自 MonoBehaviour 类可以在 Unity 的场景中创建一个 GameObject并将 UnityWebRequestQueue 挂载到这个 GameObject 上就可以在该场景中使用了。 Unity的WebRequest模块将网络请求封装成了一个队列按照发送请求的先后顺序进行处理。当一个请求被添加到队列中后WebRequest会判断当前是否有正在进行的请求如果有则将请求添加到等待队列中等待正在进行的请求结束后再发送。如果没有正在进行的请求则直接发送请求。当一个请求结束后WebRequest会从等待队列中取出下一个请求进行发送。 GET 请求队列 GET 请求队列的核心代码如下
public class GetRequestQueue : MonoBehaviour
{private QueueUnityWebRequest webRequestQueue new QueueUnityWebRequest();void Update(){if (webRequestQueue.Count 0){UnityWebRequest webRequest webRequestQueue.Peek();if (webRequest.isDone){string responseText webRequest.downloadHandler.text;Debug.Log(responseText);webRequestQueue.Dequeue();}else if (webRequest.isHttpError || webRequest.isNetworkError){Debug.Log(webRequest.error);webRequestQueue.Dequeue();}}}public void AddRequest(string url){UnityWebRequest webRequest UnityWebRequest.Get(url);webRequestQueue.Enqueue(webRequest);StartCoroutine(webRequest.SendWebRequest());}
}这个类定义了一个 Queue 对象 webRequestQueue 来缓存所有 GET 请求。在 Update 方法中每次检查队列是否有请求如果有请求就取出队列中的第一个请求并启动协程将这个请求发送出去。如果请求完成则将请求从队列中删除否则如果请求出错也将请求从队列中删除。 你可以将 AddRequest 方法暴露在其他类中用于向 GET 请求队列中添加请求。如下所示
public class GetRequestDemo : MonoBehaviour
{public string url http://localhost:8080/get;private GetRequestQueue getRequestQueue;void Start(){getRequestQueue GameObject.Find(GetRequestQueue).GetComponentGetRequestQueue();}void OnGUI(){if (GUI.Button(new Rect(10, 10, 100, 50), Send GET Request)){getRequestQueue.AddRequest(url);}}
}在这个例子中我们定义了一个 GET 请求的 Demo 类当用户点击按钮时调用 AddRequest 方法将请求添加到队列中。 POST请求队列 POST 请求队列的实现与 GET 请求队列类似主要区别在于我们需要为 POST 请求添加请求体。下面是 POST 请求队列的实现代码
public class PostRequestQueue : MonoBehaviour
{private QueueUnityWebRequest webRequestQueue new QueueUnityWebRequest();void Update(){if (webRequestQueue.Count 0){UnityWebRequest webRequest webRequestQueue.Peek();if (webRequest.isDone){string responseText webRequest.downloadHandler.text;Debug.Log(responseText);webRequestQueue.Dequeue();}else if (webRequest.isHttpError || webRequest.isNetworkError){Debug.Log(webRequest.error);webRequestQueue.Dequeue();}}}public void AddRequest(string url, string requestBody){UnityWebRequest webRequest UnityWebRequest.Post(url, requestBody);webRequestQueue.Enqueue(webRequest);StartCoroutine(webRequest.SendWebRequest());}
}这个类定义了一个 Queue 对象 webRequestQueue 来缓存所有 POST 请求。在 AddRequest 方法中我们使用 UnityWebRequest.Post 方法创建一个 POST 请求并将请求体 requestBody 传递给该方法。 同样的你可以将 AddRequest 方法暴露在其他类中用于向 POST 请求队列中添加请求。如下所示
public class PostRequestDemo : MonoBehaviour
{public string url http://localhost:8080/post;public string requestBody {\key\: \value\};private PostRequestQueue postRequestQueue;void Start(){postRequestQueue GameObject.Find(PostRequestQueue).GetComponentPostRequestQueue();}void OnGUI(){if (GUI.Button(new Rect(10, 10, 100, 50), Send POST Request)){postRequestQueue.AddRequest(url, requestBody);}}
}在这个例子中我们定义了一个 POST 请求的 Demo 类当用户点击按钮时调用 AddRequest 方法将请求添加到队列中并将请求体 requestBody 传递给 AddRequest 方法。 注意 在队列中WebRequest支持设置最大并发数即同时能进行的最大请求数。当队列中的请求数达到最大并发数时新的请求会被添加到等待队列中直到有请求结束后再进行发送。这样可以保证不会过度的进行网络请求避免出现网络拥堵等问题。
Unity的WebRequest模块的网络请求队列原理就是将请求封装成队列并按照先进先出的原则进行处理支持设置最大并发数保证并发请求的数量不会过度避免出现网络拥堵等问题。 文章转载自: http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn http://www.morning.snmsq.cn.gov.cn.snmsq.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn http://www.morning.qnksk.cn.gov.cn.qnksk.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.znpyw.cn.gov.cn.znpyw.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn http://www.morning.rgdcf.cn.gov.cn.rgdcf.cn http://www.morning.jgcxh.cn.gov.cn.jgcxh.cn http://www.morning.gnzsd.cn.gov.cn.gnzsd.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.xkwyk.cn.gov.cn.xkwyk.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.weiwt.com.gov.cn.weiwt.com http://www.morning.nmfml.cn.gov.cn.nmfml.cn http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.bpxmw.cn.gov.cn.bpxmw.cn http://www.morning.qhqgk.cn.gov.cn.qhqgk.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.brnwc.cn.gov.cn.brnwc.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.dnhdp.cn.gov.cn.dnhdp.cn http://www.morning.hqrkq.cn.gov.cn.hqrkq.cn http://www.morning.jlrym.cn.gov.cn.jlrym.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.xswrb.cn.gov.cn.xswrb.cn http://www.morning.ryrpq.cn.gov.cn.ryrpq.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn http://www.morning.bnygf.cn.gov.cn.bnygf.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn http://www.morning.thpzn.cn.gov.cn.thpzn.cn http://www.morning.zfqdt.cn.gov.cn.zfqdt.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.nfdty.cn.gov.cn.nfdty.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn http://www.morning.wjlkz.cn.gov.cn.wjlkz.cn http://www.morning.jtwck.cn.gov.cn.jtwck.cn http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn http://www.morning.spdyl.cn.gov.cn.spdyl.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.cwwts.cn.gov.cn.cwwts.cn http://www.morning.mnyzz.cn.gov.cn.mnyzz.cn http://www.morning.gsjfn.cn.gov.cn.gsjfn.cn http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.jnoegg.com.gov.cn.jnoegg.com http://www.morning.mymz.cn.gov.cn.mymz.cn http://www.morning.zplzj.cn.gov.cn.zplzj.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn