Javascript 正确的插座。io插座断开

Javascript 正确的插座。io插座断开,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,所以我有一个节点js客户端: var io = require('socket.io-client'); var serverUrl = 'http://localhost:8080/w'; var socket = io.connect(serverUrl); socket.emit('call', "Watchdog is talking.", function(resp) { console.log("Boss said : " + resp); }); socket.on(

所以我有一个节点js客户端:

var io = require('socket.io-client');
var serverUrl = 'http://localhost:8080/w';
var socket = io.connect(serverUrl);

socket.emit('call', "Watchdog is talking.", function(resp) {
    console.log("Boss said : " + resp); 
});

socket.on('disconnect', function() {
    console.log('disconnect called');
    process.exit();
});
还有一个节点js服务器,如下所示:

var express         = require ('express'),
    app             = express().listen(8080),
    io              = require('socket.io').listen(app),
    watchdog        = io.of('/w');

//Listener for watchdog socket namespace
    watchdog.on('connection', function(socket) {
        socket.on('call', function(msg, fn) {
            console.log("Watchdog 's saying : " + msg);
            fn("Good job son.");
            socket.disconnect();
        });
    });
我希望客户端在发送数据后停止,因此我在“断开连接”事件上调用process.exit(),但这似乎不是结束套接字连接的正确方法,因为我得到了“socket error error:read ECONNRESET”。如何实现正确的断开连接?
提前感谢。

您在服务器端以错误的方式使用自定义事件。在服务器端执行类似操作:

watchdog.on('connection', function(socket) {
    socket.on('call', function(msg, fn) {
        console.log("Watchdog 's saying : " + msg);
        fn("Good job son.");
        socket.emit('disconnect_fired', {});
    });
});
在客户端执行以下操作:

socket.on('disconnect_fired', function(data){
  socket.disconnect();
});

socket.disconnect()在大约2分钟后断开插座,而不是立即断开。我对socket.io版本<1的问题进行了回答,然后它正常工作。