Perpustakaan kelas soket.io tidak hanya dapat mengirim pesan satu sama lain, tetapi juga mengirim acara satu sama lain melalui metode emit objek port soket.
Emit mengatakan dalam acara sebelumnya yang sekarang mengatakan: Emit digunakan untuk memicu peristiwa secara manual.
Salinan kode adalah sebagai berikut:
socket.emit (peristiwa, data, fungsi (data1, data2 ......) {
});
Saat mengirim acara menggunakan metode emit, Anda dapat menggunakan metode ON dari objek port soket di ujung lain untuk mendengarkan pada metode sekali.
Salinan kode adalah sebagai berikut:
socket.on (event, function (data, fn) {
});
socket.once (event, function (data, fn) {
})
Data parameter dalam fungsi panggilan balik di atas: data yang dibawa dalam acara yang dikirim oleh pihak lain,
FN: Fungsi panggilan balik panggilan balik yang ditentukan oleh pihak lain saat mengirim acara.
Kasus 1: Setelah server dan klien terhubung, acara berita dikirim ke klien, dan objek dilakukan dalam acara tersebut, dan nilai atribut Hello dari objek adalah "Hello". Ketika klien mengirim acara acara saya yang lain, "server menerima data" adalah output di konsol + data yang dibawa pada klien mengirim acara.
Kode sisi server, server.js
Salinan kode adalah sebagai berikut:
var http = membutuhkan ("http");
var sio = membutuhkan ("socket.io");
var fs = membutuhkan ("fs");
var server = http.createServer (function (req, res) {
res.writeHead (200, {"tipe konten": "text/html"});
res.end (fs.readfilesync ("./ index.html"));
});
server.listen (1337);
var socket = sio.listen (server);
socket.on ("connection", function (socket) {
socket.emit ("news", {hello: "hello"});
socket.on ("Acara saya yang lain", fungsi (data) {
console.log ("Server menerima informasi %j", data);
});
});
Kode Client Index.html:
Salinan kode adalah sebagai berikut:
<! Doctype html>
<Html>
<head lang = "en">
<meta charset = "UTF-8">
<title> </title>
<skrip src = "/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect ();
socket.on ("news", function (data) {
console.log (data.hello);
socket.emit ("acara saya yang lain", {my: "data"});
});
</script>
</head>
<body>
</body>
Hasil Operasi:
Satu hal yang dapat Anda temukan adalah eksekusi selalu ada di sisi yang mendengarkan, bukan di sisi manual.
Kasus 2: Ketika acara pihak lain dipicu secara manual, tentukan fungsi callback.
Ketika klien dan server terhubung, acara SetName dikirim ke klien. Acara ini membawa "Zhang San". Ketika acara dipicu, fungsi panggilan balik ditentukan, yang menghasilkan nilai parameter 2 ke konsol.
Salinan kode adalah sebagai berikut:
var http = membutuhkan ("http");
var sio = membutuhkan ("socket.io");
var fs = membutuhkan ("fs");
var server = http.createServer (function (req, res) {
res.writeHead (200, {"tipe konten": "text/html"});
res.end (fs.readfilesync ("./ index.html"));
});
server.listen (1337);
var socket = sio.listen (server);
socket.on ("connection", function (socket) {
socket.emit ("setname", "zhang san", fungsi (data1, data2) {
console.log (data1);
console.log (data2);
});
});
Salinan kode adalah sebagai berikut:
<! Doctype html>
<Html>
<head lang = "en">
<meta charset = "UTF-8">
<title> </title>
<skrip src = "/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect ();
socket.on ("setName", function (name, fn) {
console.log (nama);
fn ("li si", "wang wu");
});
</script>
</head>
<body>
</body>
</html>
Hasil Eksekusi:
Fungsi panggilan balik sebenarnya dieksekusi di ujung pemicu.