Die Klassenbibliothek in Socket.IO kann nicht nur Nachrichten aneinander senden, sondern auch über die Emit -Methode des Socket -Port -Objekts Ereignisse aneinander senden.
Emit sagte im vorherigen Ereignis, das nun sagt: Emit wird verwendet, um Ereignisse manuell auszulösen.
Die Codekopie lautet wie folgt:
Socket.Emit (Ereignis, Daten, Funktion (Data1, Data2 ......) {
});
Beim Senden von Ereignissen mithilfe der Emit -Methode können Sie die Methode des Socket -Portobjekts am anderen Ende verwenden, um auf die einmalige Methode anzuhören.
Die Codekopie lautet wie folgt:
Socket.on (Ereignis, Funktion (Daten, fn) {
});
Socket.once (Ereignis, Funktion (Daten, fn) {
})
Die Parameterdaten in der obigen Rückruffunktion: Die Daten, die in dem von der anderen Partei gesendeten Ereignis übernommen wurden.
FN: Die von der andere Partei angegebene Rückruf -Rückruffunktion beim Senden eines Ereignisses.
Fall 1: Nachdem der Server und der Client verbunden sind, wird ein Nachrichtenereignis an den Client gesendet, und ein Objekt wird im Ereignis übertragen, und der Hello -Attributwert des Objekts ist "Hallo". Wenn der Client mein anderes Ereignisereignis sendet, wird der "Server empfangen Daten" in der Konsole + ausgeben. Die im Client enthaltenen Daten senden das Ereignis.
Server-Seite Code, Server.js
Die Codekopie lautet wie folgt:
var http = required ("http");
var SiO = Request ("Socket.io");
var fs = require ("fs");
var server = http.createServer (Funktion (req, res) {
Res.WriteHead (200, {"Content-Type": "text/html"});
res.end (fs.readFilesync ("./ index.html"));
});
Server.Listen (1337);
var socket = sio.listen (server);
Socket.on ("Verbindung", Funktion (Socket) {
Socket.Emit ("News", {Hallo: "Hallo"});
Socket.on ("Mein anderes Ereignis", Funktion (Daten) {
console.log ("Der Server akzeptiert Information %J", Daten);
});
});
Client index.html Code:
Die Codekopie lautet wie folgt:
<! DocType html>
<html>
<head Lang = "en">
<meta charset = "utf-8">
<title> </title>
<script src = "/socket.io/socket.io.js"> </script>
<Script>
var socket = io.connect ();
Socket.on ("News", Funktion (Daten) {
console.log (data.hello);
Socket.Emit ("mein anderes Ereignis", {my: "data"});
});
</script>
</head>
<body>
</body>
Betriebsergebnisse:
Eine Sache, die Sie finden können, ist, dass die Ausführung immer auf der Hörseite und nicht auf der manuellen Seite ist.
Fall 2: Wenn das Ereignis der anderen Partei manuell ausgelöst wird, geben Sie die Rückruffunktion an.
Wenn der Client und der Server verbunden sind, wird das SetName -Ereignis an den Client gesendet. Die Veranstaltung trägt "Zhang San". Wenn das Ereignis ausgelöst wird, wird eine Rückruffunktion angegeben, wodurch 2 Parameterwerte in die Konsole ausgegeben werden.
Die Codekopie lautet wie folgt:
var http = required ("http");
var SiO = Request ("Socket.io");
var fs = require ("fs");
var server = http.createServer (Funktion (req, res) {
Res.WriteHead (200, {"Content-Type": "text/html"});
res.end (fs.readFilesync ("./ index.html"));
});
Server.Listen (1337);
var socket = sio.listen (server);
Socket.on ("Verbindung", Funktion (Socket) {
Socket.Emit ("setName", "Zhang san", Funktion (Data1, Data2) {
console.log (data1);
console.log (data2);
});
});
Die Codekopie lautet wie folgt:
<! DocType html>
<html>
<head Lang = "en">
<meta charset = "utf-8">
<title> </title>
<script src = "/socket.io/socket.io.js"> </script>
<Script>
var socket = io.connect ();
Socket.on ("setName", function (name, fn) {
console.log (name);
fn ("li si", "wang wu");
});
</script>
</head>
<body>
</body>
</html>
Ausführungsergebnisse:
Die Rückruffunktion wird tatsächlich am Trigger -Ende ausgeführt.