CocosCreator Http、WebSocket、SocketIO用法

最近一直比较忙,没有时间看看Creator,正好趁着今天有点空闲,研究了一下有关网络连接的部分。毕竟现在的游戏单机的还是偏少,游戏的生命周期中,用到的网络请求还是挺多的,正好就搞了个demo,要是存在问题,还请指出。

本人小白,没有太过于深入研究,仅适用于新手,勿喷。

首先创建一个新的工程,取名为httpTest,进行界面布局,效果如下:

 CocosCreator Http、WebSocket、SocketIO用法_第1张图片

在脚本中将文本控件声明,进行赋值,效果如下:

 CocosCreator Http、WebSocket、SocketIO用法_第2张图片

 

贴了两张图,其实都没进入主题,下面就是对于每一种请求进行详解。

 

在项目中,主要使用两种网络操作,短连接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请求:

 CocosCreator Http、WebSocket、SocketIO用法_第3张图片

然后post请求:

 CocosCreator Http、WebSocket、SocketIO用法_第4张图片

 

其实总体看过来就很清晰了,首先得到XMLHttpRequest实例,然后通过open打开链接,然后监听下连接状态变化,在readyState=4而且status=200时,链接成功,这时候就可以得到网络的数据了。最后别忘了,要send一下。PS:如果下发数据是string类型,需要转下json,然后就可以当做表来用了。

当然,postget有些许区别,比如参数,设置头等,总体感觉,不是很难理解吧。

顺道说一下对于服务器长时间不响应的处理,直接撸:

 CocosCreator Http、WebSocket、SocketIO用法_第5张图片

 

在搜索资料的时候,遇到有人说跨域访问问题,网络访问的时候出现了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

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

echo "I Love you"  

?>  

 

这样,就成功返回了数据?但是,必须改编码为UTF-8 rom格式!

但我没有遇到过,如果你遇到了,那就恭喜你了。

 

接下来是WebSocket,请移步https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket,这片文档详细的介绍了websocket的内容。

学习好了,准备撸代码:

 CocosCreator Http、WebSocket、SocketIO用法_第6张图片

 

如果你阅读了上面的链接内容,那我写的就不难理解了,所以就不详细说了。

 

最后SocketIO也说一下,但是我没找到比较好的详解教程,https://www.cnblogs.com/lxxhome/p/5980615.html这一篇可以看看。

 CocosCreator Http、WebSocket、SocketIO用法_第7张图片

其实后面两种很类似,都是创建链接,然后监听。

 

最终,运行成功的效果应该是这样的:

 CocosCreator Http、WebSocket、SocketIO用法_第8张图片

 

Ok,时间紧迫,就先写这么多了。

下面,又到了伟大的广告时间,想要获得源码,可以去https://download.csdn.net/download/qq_16224121/10301553下载,同样的需要两个积分,如果不想发费,那么请加入技术交流群,群里会有源码下载:221725135,欢迎大家加入游戏开发群,一起讨论,一起研究。

你可能感兴趣的:(CocosCreator)