firefox os 如何为Firefox OS TCP套接字设置超时,firefox-os,javascript,sockets,firefox,tcp,firefox-os,firefox Os,Javascript,Sockets,Firefox,Tcp,Firefox Os" /> firefox os 如何为Firefox OS TCP套接字设置超时,firefox-os,javascript,sockets,firefox,tcp,firefox-os,firefox Os,Javascript,Sockets,Firefox,Tcp,Firefox Os" />

firefox os 如何为Firefox OS TCP套接字设置超时

firefox os 如何为Firefox OS TCP套接字设置超时,firefox-os,javascript,sockets,firefox,tcp,firefox-os,firefox Os,Javascript,Sockets,Firefox,Tcp,Firefox Os,我正在开发一个应用程序,该应用程序试图通过网络按顺序连接到IP列表 但是,如果套接字在几秒钟内没有连接,并且连接处于非活动状态的时间超过几秒钟,我希望关闭该套接字 例如: var socket = navigator.mozTCPSocket.open(IP, port); //would like to set timeout for connection here socket.onopen = function(event){ var serviceRequest = new Ob

我正在开发一个应用程序,该应用程序试图通过网络按顺序连接到IP列表

但是,如果套接字在几秒钟内没有连接,并且连接处于非活动状态的时间超过几秒钟,我希望关闭该套接字

例如:

var socket = navigator.mozTCPSocket.open(IP, port);
//would like to set timeout for connection here
socket.onopen = function(event){
    var serviceRequest = new Object();
    serviceRequest.type = "myService";
    var sendStr = JSON.stringify(serviceRequest);
    sendStr+="\n";
    sendStr = sendStr.toString('utf-8');
    socket.send(sendStr);
    //and would like a timeout for receiving data here
    socket.ondata = function(event){
        //etc
    }
}

据我所知,没有办法指定超时。如果要指定超时,应使用常用的javascript
setTimeout
,存储其id

使用TCPSocket对象上的
onopen
事件取消超时。如果超时被触发。您可以在套接字上调用
close
方法

var socket = navigator.mozTCPSocket.open(IP, port);

var timeout = setTimeout(function () {
    socket.close()
}, timeoutDuration)

//would like to set timeout for connection here
socket.onopen = function(event){
    // Prevent from timingout if open
    clearTimeout(timeout)

    var serviceRequest = new Object();
    serviceRequest.type = "myService";
    var sendStr = JSON.stringify(serviceRequest);
    sendStr+="\n";
    sendStr = sendStr.toString('utf-8');
    socket.send(sendStr);
    //and would like a timeout for receiving data here
    socket.ondata = function(event){
        //etc
    }
}

非常感谢,我会试试这个。