如何关闭所有websocket连接

时间:2015-04-28 10:04:01

标签: javascript websocket

我正在尝试关闭所有websocket连接。不幸的是,我总是得到错误:

  

TypeError:s.close不是函数

我很少使用javascript,我找不到错误......

var sockets = [];

function addClient() {

    var socket = new WebSocket("ws://localhost:8080/WebsocketHome/notification");
    socket.onmessage = function (event){
        [...]
    };

    sockets.push(socket);
}


function removeAllClients(){
    for(var s in sockets){
        s.close();
    }
}

2 个答案:

答案 0 :(得分:2)

for为您提供键(在这种情况下为:数组索引),而不是值;你需要:

for(s in sockets)
    sockets[s].close();

答案 1 :(得分:2)

不可思议,但这段代码:

function removeAllClients(){
    for(var s in sockets){
        s.close();
    }
}

迭代索引。所以我现在就这样做了:

function removeAllClients(){

    sockets.forEach(function(s) {
        s.close();
    });

}

它有效。我真的很惊讶......