laya之坑--websocket

websocket----几个要记住的定义:1.双向长连接,不受平台限制 2.websocket发送数据的格式一般为二进制和字符串 3.websocket的链接是异步的

步骤:

1.建立连接,上代码:

		private function initSocket():void
		{
			socket = new Socket(null,null,ByteArray);
			socket.on(Event.OPEN,this,connectHandler); //连接正常打开抛出的事件
				    socket.on(Event.MESSAGE,this,dataHandler);//接收到消息抛出的事件
			socket.on(Event.CLOSE,this,closeHandler);//socket关闭抛出的事件
			socket.on(Event.ERROR,this,catchError);//连接出错抛出的事件
			}
这里四个事件肯定要记住的

			public function connect(host:String = null, port:int=0):void
		{
			var url:String = "ws://" + host + ":" + port;
			socket.connectByUrl(url);
		}

连接成功:

		private function connectHandler():void
		{
			//连接成功后的处理,一般是启动心跳包
			heart()		
		}
		public function Heart():void
		{
			send();
		}
接受消息:收到消息首先要进行解密处理(加密解密这块在别的地方再记录一下)

问题:1.如何判断当前返回的消息是否是最后一条消息?

    2.如何判断这条消息是心跳包返回的消息还是请求返回的消息?

答:1.在发送协议的时候,记录下这次发送协议的id,当服务器发送过来的时候也会有个id,通过比对id是否相同可以知道是否是最后一个消息

2.同样给心跳包定个id不就行了么


关于apply()和call(),以前不知道还有这个东西存在,现在边学边记录

这两兄弟应该是为了解决上下文环境(执行域)

比如:这例子虽然是抄来的,but,抄来的现在就是我的了!

这是一个张三对象的一个加薪的方法:

public function addSalary(value:uint):void

现在给张三加薪:

张三.addSalary(10000);
那么现在给李四加薪,咋办呢?李四没有加薪这个对象的方法
张三.addSalary.call(李四, 20000);
apply()和call()方法类似(目前先理解到这),第二个参数不一样,apply()第二个参数是数组。

对第一个参数的理解:一般情况下用apply()的时候,都不是在本类调用的,那么第一个参数可以指需要调用的对象,如果设置为null的话,则是全局global


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值