nodejs socket.io套接字文件在断开连接后未关闭

时间:2015-06-16 12:12:41

标签: node.js socket.io disconnect

我正在使用node(v.0.12.4),socket.io(1.3.5)这是服务器。 服务器是Ubuntu 14.04 LTS。

客户端是使用socket.io库的android,兼容socket.io 1.X.X(https://github.com/nkzawa/socket.io-client.java

我有一个问题。

我运行socket.io服务器(3305端口)并显示文件列表(lsof -i | grep 3305)

**COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME**

**node 135665 root 11u IPv6 516450 0t0 TCP *:3305(LISTEN)**

和客户端连接到socket.io服务器并显示文件列表(lsof -i | grep 3305)

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

node 135665 root 11u IPv6 516450 0t0 TCP *:3305(LISTEN)

node 135665 root 14u IPv6 516450 0t0 TCP *:ServerIP(xxx.xxx.xxx.xxx:3305)->AndroidIP(xxx.xxx.xxx.xxx:33972)(ESTABLISHED)

和android的网络被改变了,比如wifi到lte。

socket.io服务器由于pingTimeout(60秒)而断开android客户端。并显示文件列表(lsof -i | grep 3305)

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

node 135665 root 11u IPv6 516450 0t0 TCP *:3305(LISTEN)

node 135665 root 14u IPv6 516450 0t0 TCP *:ServerIP(xxx.xxx.xxx.xxx:3305)->AndroidIP(xxx.xxx.xxx.xxx:33972)(ESTABLISHED)

socket.io服务器源是

var io=new Server(3305);
io.sockets.on("connection",function(socket){
console.log("connection : "+socket.id);
socket.on("disconnect",function(){
console.log("disconnect : "+socket.id);
 });
});

我展示了socket.io服务器断开连接客户端。为什么它仍然是ESTABLISHED?

1 个答案:

答案 0 :(得分:0)

试试这个

var io = new Server(3305);
io.on("connection", function(socket) {
    console.log("connection : " + socket.id);
    socket.on("disconnect", function() {
        console.log("disconnect : "+ socket.id);
    });
});