用ccc写了一个websocket的测试,发现一个问题。
界面如下:
问题描述:在web端一切正常。在ios模拟器上当点击断开连接后点击重连和点击断开都会出现xcode报错
Error: Invalid Native Object!。
没有点击断开连接之前,ios上可以握手可以发送消息,可以接受消息。一旦点击断开后就不行了···按钮也会灰掉···
代码附上:
var single = require("SocketSingle");
cc.Class({
extends: cc.Component,
properties: {
sendBtn:{
default: null,
type: cc.Button
},
sendMessage:{
default: null,
type: cc.Label
},
closeBtn: {
default: null,
type: cc.Button
},
connBtn: {
default: null,
type: cc.Button
},
ws: {
default: null,
type: WebSocket
}
},
// use this for initialization
onLoad: function () {
var self = this;
self.ws = single.getWebSocket("ws://192.168.0.106:3000", self);
this.sendMessage.string = single.getUrl();
},
callBackOfOpen: function(event){
console.log("连接" + single.getUrl() + "服务器成功!");
},
callBackOfMessage: function(event){
console.log("接受服务器消息: " + event.data);
this.sendMessage.string = event.data;
},
callBackOfClose: function(event){
console.log("WebSocket instance closed.");
this.sendMessage.string = "WebSocket instance closed.";
},
callBackOfError: function(event){
console.log("Send Text fired an error");
},
sendTxt: function(){
this.ws.send("客户端向服务端发送消息!");
},
closeClick: function(){
this.ws.close();
},
connClick: function(){
var self = this;
self.ws = single.getWebSocket("ws://192.168.0.106:3000", self);
}
// called every frame, uncomment this function to activate update callback
// update: function (dt) {
// },
});
```
var _webSocket = null; //WebSocket对象
var _url = ""; //服务器地址
module.exports = {
getUrl: function(){
return _url;
},
//url是服务器地址,target是执行回调的对象
getWebSocket: function(url, target){
if(_webSocket){//对象存在
if(_webSocket.readyState === WebSocket.OPEN){//已连接上服务器
if(url != _url){//服务器地址不同
_webSocket.close();//断开连接
_url = url;
_webSocket = new WebSocket(_url);//重新创建连接
}
}else{//还没有连接上服务器
_url = url;
_webSocket = new WebSocket(_url);
}
}else{//对象不存在,创建对象
_url = url;
_webSocket = new WebSocket(_url);
}
//绑定连接成功的回调方法
_webSocket.onopen = function(event){
target.callBackOfOpen(event);
};
//绑定消息接收的回调方法
_webSocket.onmessage = function(event){
target.callBackOfMessage(event);
};
//绑定断开连接的回调方法
_webSocket.onclose = function(event){
target.callBackOfClose(event);
};
//绑定错误发生的回调方法
_webSocket.onerror = function(event){
target.callBackOfError(event);
};
return _webSocket;
}
};
```
求大神解惑·····