我使用Kaazing HTML5 ver构建了一个原型应用程序。 3.5.0。该应用程序使用ByteSockets通过kaazing与tcp服务器通信。该应用程序从服务器接收ping包并发送另一个包作为响应。
该应用程序适用于chrome和firefox,但在建立连接10分钟后,它停止使用IE9接收ping包,日志中没有明显的异常或错误,但如果我手动将响应包发送到服务器我的代码捕获已关闭的连接事件。知道如何解决这个问题?
var webSocket = new ByteSocket(location_.value);
webSocket.onopen = function(evt) {
var buf = new ByteBuffer();
/*protocol handshake related stuff*/
buf.putInt(0);
buf.putShort(200);
buf.putShort(6);
buf.putShort(1);
buf.putInt(0);
buf.flip();
webSocket.send(buf);
buf = new ByteBuffer();
buf.putString("REQUESTING SERVICE", Charset.UTF8);
buf.flip();
webSocket.send(buf);
};
webSocket.onmessage = function(evt) {
var serverid;
var msgtype;
var bodysize;
var body;
if (connection_active == false) {
var greeting = evt.data.getString(Charset.UTF8);
if(greeting=="OK"){
connection_active = true;
}
return;
} else {
serverid = evt.data.getInt();
msgtype = evt.data.getUnsignedShort();
evt.data.getUnsignedShort();//year
evt.data.get();//month
evt.data.get();//day
evt.data.getInt();//hour
bodysize = evt.data.getUnsignedShort();
if (evt.data.remaining >= bodysize ) {
body = evt.data.getBytes(bodysize);
}
}
/*ping message*/
if (msgtype == 100) {
var buf = new ByteBuffer();
buf.putInt(serverid);
buf.putShort(1);//I am alive
buf.putShort(0);//bodysize
buf.flip();
webSocket.send(buf);
}
};
webSocket.onclose = function(evt) {
connection_active=false;
};
每隔5秒收到一次ping消息。