Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang penggunaan acara socket.io dalam node_node.js

Penjelasan terperinci tentang penggunaan acara socket.io dalam node_node.js

WBOY
WBOYasal
2016-05-16 16:26:541685semak imbas

Pustaka kelas socket.io bukan sahaja boleh menghantar mesej antara satu sama lain, tetapi juga menghantar acara antara satu sama lain melalui kaedah pancaran objek port soket.

emit mengatakannya dalam acara sebelumnya dan kini dikatakan dalam satu ayat: emit digunakan untuk mencetuskan peristiwa secara manual.

Salin kod Kod adalah seperti berikut:

socket.emit(peristiwa,data,fungsi(data1,data2...){
});

Apabila menggunakan kaedah emit untuk menghantar acara, anda boleh menggunakan kaedah on dan sekali kaedah objek port soket di hujung yang satu lagi untuk mendengar.

Salin kod Kod adalah seperti berikut:

socket.on(acara,fungsi(data,fn){
});
socket.once(acara,fungsi(data,fn){
})

Data parameter dalam fungsi panggil balik di atas: data yang dibawa dalam acara dihantar oleh pihak lain,

fn: Fungsi panggil balik yang ditentukan oleh pihak lain semasa menghantar acara.

Kes 1: Apabila pelayan dan klien disambungkan, acara berita dihantar kepada klien Acara tersebut membawa objek yang nilai atribut hellonya ialah "Hello" Selepas menerima klien, ia menghantar acara acara saya yang lain. "Pelayan telah menerima data" dikeluarkan dalam konsol Pelanggan menghantar data yang dibawa dalam acara tersebut.

Kod sisi pelayan, server.js

Salin kod Kod adalah seperti berikut:

var http=require("http");
var sio=require("socket.io");
var fs=require("fs");
var server=http.createServer(function (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("sambungan", fungsi (soket) {
socket.emit("berita",{hello:"Hello"});
socket.on("acara saya yang lain", fungsi (data) {
console.log("Pelayan menerima maklumat %j",data);
});
});

Kod index.html pelanggan:

Salin kod Kod adalah seperti berikut:








        var socket=io.connect();
socket.on("berita", fungsi (data) {
console.log(data.hello);
socket.emit("acara saya yang lain",{my:"data"});
         });                                                   






Keputusan berjalan:,

Satu perkara boleh ditemui: pelaksanaan sentiasa di sisi mendengar, bukan di sisi pelaksanaan manual.

Kes 2: Apabila mencetuskan acara pihak lain secara manual, nyatakan fungsi panggil balik.

Apabila klien dan pelayan disambungkan, acara setName dihantar kepada klien Acara membawa "Zhang San". ke konsol.

Salin kod Kod adalah seperti berikut:

 var http=require("http");
 var sio=require("socket.io");
 var fs=require("fs");
 var server=http.createServer(function (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("sambungan", fungsi (soket) {
     socket.emit("setName","张三", fungsi (data1,data2) {
         console.log(data1);
         console.log(data2);
     });
 });

复制代码 代码如下:

 
 
 
    
    
    
    
         var socket=io.connect();
         socket.on("setName", fungsi (nama,fn) {
            console.log(nama);
             fn("李四","王五");
         });     
    

 
 
 
 
 

执行结果:

回调函数实在触发端执行的.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn