Javascript 正确的插座。io插座断开
所以我有一个节点js客户端: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(
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的问题进行了回答,然后它正常工作。