Javascript 如何在socket.io 1.0中断开服务器端和客户端的套接字连接

Javascript 如何在socket.io 1.0中断开服务器端和客户端的套接字连接,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,考虑以下几点: //client side: var socket = io('http://localhost'); //disconnecting client side 5 seconds after connecting setTimeout(function(){ socket.disconnect(); },5000); //Server side: var io = ...... io.on('connection', function (socket) { s

考虑以下几点:

//client side: 
var socket = io('http://localhost');
//disconnecting client side 5 seconds after connecting
setTimeout(function(){
    socket.disconnect();
},5000);

//Server side:
var io = ......
io.on('connection', function (socket) {
    setInterval(function(){
        console.log(socket.id);//this will continue outputting the socket.id forever.
    },1000);
});
现在我的问题是,我将如何断开与服务器/客户端的连接,因为单靠客户端方法似乎不起作用


谢谢。

至于您的实际问题:无需执行任何操作,客户端已与服务器断开连接。但是,您遇到的问题不是客户端没有断开连接,而是您创建了一个间隔。在JavaScript中,setInterval回调将继续运行,直到您告诉它停止

因此,解决方案是在客户端断开连接时告诉它停止:

//Server side:
var io = ......
io.on('connection', function (socket) {
    var intervalId = setInterval(function(){
        console.log(socket.id); //this will continue outputting the socket.id until clearInterval() is called
    },1000);

    socket.on('disconnect', function() {
        clearInterval(intervalId);
    });
});

然后我把我的问题解释错了。1.)我知道使用什么间隔间隔间隔只是为了证明socket.id即使在断开连接后仍然有效。2)不需要做任何事情。。它自己断开了。。嗯,我不知道我的意思是
打开(“断开连接”
确实启动了,但是套接字仍然是活动的..所以这很奇怪,这使得我的答案毫无用处。但是你说的“套接字仍然是活动的”是什么意思?即使对象仍然存在(因为你对它有引用,所以它总是会存在)我很确定socket.io不会将数据发送到空中。断开连接后,
socket.connected=false
socket.disconnected=false
,并且套接字不在
io.sockets.connected
中。在什么情况下,套接字对您来说还不够死?或者更确切地说:当我与h 2个不同的浏览器-我将有2个
io.on(“连接”
firing-如果我停止应用程序,并在它尝试重新连接到这两个套接字后立即重新启动它,这是有意义的。现在,在重新启动服务器之前,我断开其中一个浏览器的连接,然后重置服务器。你会想到的是,它只会重新连接到一个套接字,但会重新连接它们两者都有..很抱歉,我没有看到您的回复。我只是尝试了您的场景,对我来说,它的行为符合预期。也许您应该问一个关于该特定问题的问题(只有必要的代码来重现它)?