Estoy tratando de crear una prueba usando LearnBoost's socket.io y node-websocket-client. La comunicación entre el cliente y el servidor funciona de maravilla. Después de que se termine toda la comunicación, cierro tanto el cliente como el servidor. Sin embargo, el programa se cuelga, esperando una devolución de llamada desconocida. Dos preguntas:¿Cómo se cierra correctamente socket.io/websocket-client?
- ¿Cuál es el siguiente programa en espera?
- ¿Existe alguna herramienta para diagnosticar las devoluciones de llamada pendientes en los programas de nodo?
var connect = require('connect'),
io = require('socket.io'),
WebSocket = require('websocket-client').WebSocket;
var port = 7111;
var server = connect.createServer();
var socket = io.listen(server);
socket.on('connection', function(client) {
client.send('Welcome!');
client.on('message', function(message) {
console.log(message);
});
client.on('disconnect', function() {
console.log('closing');
server.close();
});
});
server.listen(port, function() {
var ws = new WebSocket('ws://localhost:' + port + '/socket.io/websocket');
ws.onmessage = function(message) {
console.log(message.data);
};
setTimeout(function() {
ws.send('~m~3~m~Yo!');
ws.close();
}, 10);
});
EDIT: cambió el nombre de la variable de la WebSocket a ws
para evitar confusiones
Respuesta a la segunda pregunta: No hay herramienta: Consulte http://stackoverflow.com/questions/5916066/node-js-tool-to-see-why-process-is-still-running –