Ich habe gestern Steckdosen, socket.io und Segel studiert und muss sagen, dass ich ziemlich verloren bin. Ich habe sie noch nie benutzt. Ich dachte, ich verstehe, aber ich bin nicht mehr sicher.
Ich habe meine Arbeit auf http://socket.io/get-started/chat/. Ich arbeite mit dem Framework Sails.js, das eine eigene Methode für Sockets usw. hinzufügt.
Im config/sockets.js
wir haben ein onConnect
und onDisconnect
Methoden. Sehen https://github.com/balderdashy/sails-docs/blob/master/reference/sails.config/sails.config.sockets.md und (Quellcode) https://gist.github.com/Vadorequest/568afc14294f1448ab55
Ich werde Segel und socket.io vergleichen, nehmen wir diesen Code:
io.on("connection", function(socket){
console.log("a user connected");
socket.on("disconnect", function(){
console.log("user disconnected");
});
});
Wenn das socket.io geöffnet ist (Verbindung), wird definiert listeners
mögen socket.on("disconnect")
die auf eine ausgesendete Anfrage warten, vom Client oder vom Server aus socket.emit
Methode.
Was ich dachte ist das die Segel onConnect
ist äquivalent zu socket.io io.on(connection)
. Dann die Segel onDisconnect
Methode ist äquivalent zu socket.on("disconnect")
in der io.on(connection)
Es wäre wie eine Abkürzung, um die richtige Art und Weise zu finden, um mit diesem bestimmten Ereignis umzugehen und seine Standards zu respektieren (die Methode beginnt mit on
).
Aber ich habe meinen Code einem Freund gezeigt, der dies getan hatIch habe bereits mit socket.io und sails gearbeitet und er sagt mir, dass ich "falsch liege" und was ich tue, ist das Definieren eines Listeners innerhalb eines anderen Listeners, der (zumindest) zu einem chaotischen Durcheinander führen würde.
Ich würde gerne wissen, ob ich falsch verstanden habe, wie man Segelsteckdosen einrichtet.
Wenn ich falsch liege, werde ich weinen, aber ich werde darüber hinwegkommen.
Antworten:
3 für die Antwort № 1Mein erster Eindruck war eigentlich richtig, also verstecken Sails das socket.io
Für uns logisch sind diese beiden Codes äquivalent, der erste verwendet socket.io
und die zweite mit Segel config/sockets.js
Weg:
// Socket.io way
io.on("connection", function(socket){
socket.on("disconnect", function(){
console.log("user disconnected");
});
});
// Sails way (config/sockets.js), hide the socket.io logic. (Facade design pattern)
module.exports.sockets = {
onDisconnect: function(session, socket) {
console.log("user disconnected");
}
}
Genauso die Segel onConnect
Methode ist äquivalent zu
io.on("connection", function(socket){
socket.on("connect", function() {
console.log("user connected");
});
});