Wie macht man richtig Herunterfahren Buchse.io / websocket-client?
Ich versuche, erstellen Sie einen test mit LearnBoost ist socket.io und die Knoten-websocket-client. Die Kommunikation zwischen client und server funktioniert es Super. Nachdem alle Kommunikation ist getan, ich schließe den client und den server. Doch das Programm reagiert nicht, warten auf einige unbekannte callback. Zwei Fragen:
- Was ist das folgende Programm warten?
- Gibt es ein tool für die Diagnose ausstehende callbacks in node-Programme?
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);
});
BEARBEITEN: verändert die variable name der WebSocket zu ws
um Verwirrung zu vermeiden
Antwort zur zweiten Frage: Es ist kein Werkzeug: Siehe stackoverflow.com/questions/5916066/...
InformationsquelleAutor Chris | 2011-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie erstellt einen socket an einem port. Sie haben nie geschlossen.
socket.server.close()
schließt Ihr (socket.io) - Buchse.Im Zweifel Lesen Sie die
socket.io
github Beispielesocket.server === server
Es ist der server, die Sie übergeben, in der liste-Anweisung, so ist es geschlossen. Ich bin mir nicht sicher, was es wartet.tests/transports.websocket.js
. Es sieht aus wie Guillermo hat sich verändert, eine Menge Zeug auf dem Stamm, also werde ich check out seine neue Testmethode, um zu sehen, wenn Sie beenden Sie mehr anmutig.wusste nicht, dass
socket.server
war nur der connect-server. Ich dachte, es war etwas anderes.InformationsquelleAutor Raynos
Unten eine Möglichkeit zum beenden aller verbindungen und in der Lage sein, mehrere Espresso-tests (mit sockel.io und Steckdose.io-client).
Die Lösung ist tricky und buggy, aber funktioniert auf die 0.8.5. Das Hauptproblem ist in Bezug auf die Bibliothek zu benutzen websockets (Knoten-websocket-client).
Derzeit, auf sockel.io, die OS Mitwirkenden haben soeben die der websocket-client. So, wir müssen das gleiche tun auf unserem sockel.io-client npm-Paket nutzen zu können finishClose Methode, die auf der socket-client-Seite. Socket.io-client verwendet das websocket-Bibliothek als npm-Paket, so müssen Sie die Datei (websocket.js) und ersetzen es mit der gleichen auf-Buchse.io.
Danach, Sie könnte verwenden finishClose Methode, um sicherzustellen, die Anschlüsse sind geschlossen und mit einige benutzerdefinierte server - /client-socket-Einstellungen, die tests werden ordnungsgemäß ausgeführt.
Hoffe, jemand kann helfen.
InformationsquelleAutor ppcano
Das Programm wartet, weil die Buchse.io (server) ist immer noch für eingehende verbindungen überwacht. Ich weiß nicht von irgendeiner Weise zu stoppen hören.
Wenn Sie den Kommentar aus der Steckdose.io-listener wird das Programm nicht mehr auf
server.close()
.Was sind Sie auskommentieren?
/*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(); }); });*/
und fügen Sieserver.close()
nachws.close()
InformationsquelleAutor Detect