javascript - 如何为 Firefox OS TCP 套接字设置超时

标签 javascript sockets firefox tcp 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/

相关文章:

javascript - 内联 JavaScript 的最佳语法

javascript - 为 Polymer 自定义元素使用 native 节点名称?

sockets - 识别 DNS​​ 数据包

c - 我如何了解这个不寻常角色的值(value)?里面有数字的方阵

java - 使用 Java servlet 构建 firefox 扩展(XPI 包)

session - 强制清理 session cookie(firefox、chrome)

javascript - 在 jQuery 滚动条上淡入淡出 div

javascript - 如何隐藏 Accordion 小部件的详细信息?

java - 那么为什么这还没有真正开始呢? ServerSocket 和套接字

Python Selenium 2.39 和 Firefox 26