我正在开发 firefox-os尝试通过 TCP Socket API 按顺序连接到 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
}
}
关于javascript - 如何为 Firefox OS TCP 套接字设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038799/