Node.js server http
Node.js memungkinkan kami untuk membuat server dan klien dengan menggunakan API tingkat rendah dari modul HTTP. Ketika kami pertama kali mulai belajar Node, kami semua menemukan kode berikut:
Salinan kode adalah sebagai berikut:
var http = membutuhkan ('http');
http.createServer (function (req, res) {
res.end ('halo dunia/n');
}). Dengarkan (3000, "127.0.0.1");
Console.log ("Server Funning di http://127.0.0.1:3000");
Kode ini mencakup informasi tentang modul HTTP, yang berarti:
1. Minta modul http dari inti `node.js` dan tetapkan variabel untuk digunakan dalam skrip mendatang.
Skrip dapat mengakses beberapa metode untuk menggunakan HTTP melalui `node.js`.
2. Buat objek server web baru menggunakan `createServer`
3. Script melewati fungsi anonim ke server, memberi tahu objek server web apa yang terjadi setiap kali menerima permintaan
4. Baris skrip 4 mendefinisikan port dan host server web, yang berarti `http: //127.0.0.1: 3000` dapat digunakan
Kunjungi server
Header http
Untuk setiap permintaan dan tanggapan HTTP, header HTTP dikirim. Header HTTP mengirimkan informasi tambahan, termasuk jenis konten, tanggal server mengirim respons, dan kode status HTTP
Header HTTP berisi banyak informasi. Berikut ini adalah informasi tentang header HTTP yang termasuk dalam beranda Baidu saya:
Karena saya telah menambahkan lebih banyak situs web ke beranda Baidu saya, data di sini mungkin berbeda dari pembaca. Dari sini kita dapat melihat bahwa Baidu adalah server web dan BWS/1.1
Di bawah ini adalah informasi header HTTP dari kode di atas sekarang:
Pengalihan di Node.js
Di Node, kami dapat dengan mudah membuat server sederhana untuk mengarahkan pengunjung ke halaman web lain, dengan pedoman berikut:
1. Kirim kode respons 301 kepada pelanggan, memberi tahu pelanggan bahwa sumber daya telah dipindahkan ke lokasi lain;
2. Kirim header lokasi untuk memberi tahu pelanggan di mana harus dialihkan.
Kode yang relevan adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
var http = membutuhkan ('http');
http.createServer (function (req, res) {
res.writeHead (301, {
'Lokasi': 'http: //example-2.com/web'
});
res.end ();
}). Dengarkan (3000, '127.0.0.1');
Console.log ("Server Funning di http://127.0.0.1:3000");
Buka browser dan kunjungi halaman http://127.0.0.1:3000 akan dialihkan.
Menanggapi permintaan yang berbeda
Node.js tidak hanya dapat membuat satu respons, tetapi untuk beberapa jenis permintaan, kita perlu menambahkan beberapa rute ke aplikasi. Node membuat ini mudah dengan menggunakan modul URL. Modul URL memungkinkan kita untuk membaca URL, menganalisisnya dan kemudian melakukan sesuatu dengan output.
Salinan kode adalah sebagai berikut:
var url = membutuhkan ('url');
var requestUrl = "http://example.com:1234/path?query=string#hash"
Sekarang kita dapat menganalisis URL yang diminta dan memotong konten darinya, misalnya, untuk mendapatkan nama host, kita bisa masuk:
Salinan kode adalah sebagai berikut:
url.parse (requestUrl) .hostname
Saat ini, ia akan kembali ke "example.com"
Untuk mendapatkan nomor port, Anda dapat memasukkan:
Salinan kode adalah sebagai berikut:
url.parse (requestUrl) .port
Dia akan kembali ke "1234"
Modul acara
Node.js dianggap sebagai cara terbaik untuk mencapai konkurensi. Modul Acara adalah inti dari Node.js, dan banyak modul lain menggunakannya untuk mengelilingi fungsi arsitektur acara. Karena Node.js berjalan dalam satu utas, kode sinkron apa pun diblokir. Oleh karena itu, saat menulis kode node.js, kita perlu mempertimbangkan beberapa aturan sederhana:
1. Jangan memblokir - `node.js` berulir tunggal, dan jika kode blok, semuanya berhenti
2. Pengembalian Cepat - Operasi harus kembali dengan cepat. Jika Anda tidak dapat kembali dengan cepat, Anda harus memigrasi ke proses lain
Modul Acara memungkinkan pengembang untuk mengatur pendengar dan prosesor untuk acara. Di klien JS kita dapat mengatur pendengar untuk acara klik dan kemudian melakukan sesuatu saat acara terjadi:
Salinan kode adalah sebagai berikut:
var tar = document.getElementById ("target");
tar.addeventListener ("klik", function () {
Peringatan ("Klik Acara Dipecat, Target diklik");
},PALSU);
Tentu saja, ini adalah contoh tanpa mempertimbangkan kompatibilitas IE, dan acara fokus Node.js lebih umum untuk acara jaringan, termasuk:
1. Respons dari server web
2. Baca data dari file
3. Mengembalikan data dari database
Menggunakan modul Acara, pertama -tama kita perlu membuat instance EventeMitter baru:
Salinan kode adalah sebagai berikut:
var eventemitter = membutuhkan ('acara'). Eventemitter;
var test = EventeMitter baru ();
Setelah konten di atas ditambahkan ke kode, Anda dapat menambahkan acara dan pendengar. Kami dapat mengirim acara sebagai berikut, seperti:
Salinan kode adalah sebagai berikut:
test.emit ('msg', 'pesan dikirim oleh simpul');
Parameter pertama adalah string yang menjelaskan acara sehingga dapat digunakan untuk pencocokan pendengar
Untuk menerima pesan, pendengar harus ditambahkan, yang menanganinya saat acara dipicu, misalnya:
Salinan kode adalah sebagai berikut:
test.on ('pesan', fungsi (data) {
console.log (data);
});
Implementasi Mode Mendengarkan Acara Dasar Modul Acara AddListener/ON, ONE, REMOVELISTER, REMOVEALLLISTENERS, IMIT, dan mode mendengarkan acara dasar lainnya. Ini tidak sama dengan peristiwa di pohon DOM front-end, karena tidak memiliki perilaku peristiwa yang termasuk dalam DOM seperti gelembung, penangkapan lapisan demi lapisan, dan tidak ada cara untuk menangani pengiriman peristiwa seperti preventdefault (), stoppropagation (), stopimimediatePropagation (), dll.
1.Class: Events.eventemitter: Dapatkan kelas Eventemitter melalui kebutuhan ('acara'). Eventemitter.
2.emitter.on (acara, pendengar): Tambahkan pendengar ke ekor pendengar dari acara tertentu. Kembali ke Emitter, memfasilitasi panggilan rantai, sama di bawah ini.
3.emitter.removelistener (acara, pendengar) menghapus pendengar dari array pendengar acara
4.Mitter.Listeners (acara) Mengembalikan array pendengar dari acara yang ditentukan
Lihat dokumentasi API Node.js untuk detail lebih lanjut
Kode berikut menunjukkan pesan rahasia yang dapat menghancurkan diri sendiri dalam waktu 5 detik:
Salinan kode adalah sebagai berikut:
var eventemitter = membutuhkan ('acara'). Eventemitter;
var SecretMessage = New EventeMitter ();
SecretMessage.on ('pesan', fungsi (data) {
console.log (data);
});
SecretMessage.on ('Self Destruct', Function () {
console.log ('MSG dihancurkan!');
});
SecretMessage.emit ('pesan', 'ini adalah pesan rahasia. Ini akan mati sendiri di 5s');
setTimeout (function () {
SecretMessage.emit ('Destruct Self');
}, 5000);
Dalam skrip ini, dua acara dikirim, dengan dua pendengar. Saat skrip berjalan, acara pesan terjadi dan diproses oleh prosesor "pesan"
Eventemitter digunakan di mana -mana di Node.js, jadi penting untuk menguasainya. Node.js memperoleh data melalui operasi I/O dan banyak menggunakan modul acara untuk mendukung pemrograman asinkron
FAQ:
T: Apakah ada batasan jumlah pendengar maksimum untuk suatu acara?
A: Secara default, jika acara tersebut memiliki 10 pendengar yang beroperasi, itu akan mengeluarkan peringatan. Namun, Anda dapat menggunakan emitter.setmaxListener (n) untuk mengubah jumlah ini
T: Dapatkah saya mendengarkan semua acara yang dikirim?
Jawaban: Tidak. Kita perlu membuat pendengar untuk setiap acara yang ingin kita tanggapi