Node menyediakan banyak modul pengaturcaraan rangkaian
Node模块 | 协议 |
net | TCP |
dgram | UDP |
http | HTTP |
https | HTTPS |
Acara perkhidmatan TCP dibahagikan kepada dua kategori berikut
(1), Acara pelayan
Untuk pelayan yang dibuat melalui net.createServer(), ia ialah tika EventEmitter Terdapat jenis acara tersuai berikut:
mendengar: Dicetuskan selepas memanggil listen() untuk mengikat port atau Soket Domain, disingkatkan sebagai server.listen(port, listener), dihantar masuk melalui parameter kedua.
sambungan: Dicetuskan apabila setiap soket pelanggan bersambung ke pelayan Cara ringkas untuk menulisnya adalah melalui net.createServer(), dan parameter terakhir diluluskan.
tutup: Dicetuskan apabila pelayan ditutup Selepas memanggil server.close(), pelayan akan berhenti menerima sambungan soket baharu, tetapi mengekalkan sambungan sedia ada pada masa ini.
ralat: Peristiwa ini akan dicetuskan apabila pengecualian berlaku pada pelayan.
(2), Acara sambungan
Pelayan boleh mengekalkan sambungan dengan berbilang pelanggan pada masa yang sama, dan merupakan objek Strim biasa yang boleh ditulis dan boleh dibaca untuk setiap sambungan. Objek Stream boleh digunakan untuk komunikasi antara pelayan dan klien Ia boleh membaca data dari satu hujung dari hujung yang lain melalui peristiwa data, atau menghantar data dari satu hujung ke hujung yang lain melalui kaedah write().
data: Apabila satu hujung memanggil write() untuk menghantar data, hujung satu lagi akan mencetuskan peristiwa data dan data yang diluluskan oleh peristiwa itu ialah data yang dihantar oleh write()
tamat: Peristiwa ini akan dicetuskan apabila kedua-dua hujung sambungan menghantar data FIN.
sambung: Acara ini digunakan untuk klien dan dicetuskan apabila soket berjaya disambungkan ke pelayan.
drain: Apabila mana-mana hujung panggilan write() untuk menghantar data, hujung semasa mencetuskan acara ini.
ralat: Dihantar apabila pengecualian
tutup: Dicetuskan apabila soket tertutup sepenuhnya
tamat masa: Apabila sambungan tidak lagi aktif selepas tempoh masa tertentu, acara ini dicetuskan untuk memberitahu pengguna bahawa sambungan melahu.
TCP mempunyai strategi pengoptimuman tertentu untuk paket data kecil dalam rangkaian: Algoritma Nagle, yang dicetuskan hanya apabila data mencapai jumlah tertentu.
Perkhidmatan UDP
UDP dipanggil User Datagram Protocol, yang bukan perkhidmatan berorientasikan sambungan. UDP dalam Node hanyalah contoh EventEmitter, bukan tika Stream dan mempunyai acara tersuai berikut:
Mesej (1): Dicetuskan apabila soket UDP mendengar port kad rangkaian dan menerima mesej Data yang dibawa oleh pencetus ialah mesej Buffer objek dan maklumat alamat jauh.
(2) mendengar: Peristiwa ini dicetuskan apabila soket UDP mula mendengar.
(3) tutup: Peristiwa ini dicetuskan apabila kaedah close() dipanggil dan acara mesej tidak akan dicetuskan lagi. Jika anda perlu mencetuskan acara mesej sekali lagi, anda perlu mengikatnya semula.
Ralat (4): Dicetuskan apabila pengecualian berlaku Jika tidak dipantau, ia akan dilemparkan terus untuk menyebabkan proses keluar.
Perkhidmatan HTTP
Modul http dalam Node diwarisi daripada pelayan tcp (modul bersih) Ia boleh mengekalkan sambungan dengan berbilang pelanggan Kerana ia tidak mencipta benang untuk setiap sambungan dan mengekalkan penggunaan memori yang sangat rendah, ia boleh mencapai keselarasan yang tinggi. Perbezaan antara perkhidmatan HTTP dan perkhidmatan TCP ialah selepas keepalive didayakan, sesi TCP boleh digunakan untuk berbilang permintaan dan respons. Perkhidmatan TCP disediakan dalam unit sambungan, dan perkhidmatan HTTP disediakan dalam unit permintaan. Modul http merangkum proses dari sambungan ke permintaan.
Modul http mengabstrakkan bacaan dan penulisan soket yang digunakan untuk sambungan ke dalam objek ServerRequest dan ServerResponse, yang sepadan dengan operasi permintaan dan respons masing-masing.
(1) Permintaan HTTP
Untuk operasi baca pada sambungan TCP, modul http merangkumnya sebagai objek ServerRequest. Sebagai contoh, bahagian pengepala ialah req.method, req.url, req.headers dan bahagian data isi mesej diabstrakkan sebagai objek strim baca sahaja Jika logik perniagaan perlu membaca data dalam badan mesej, ia perlu melengkapkan aliran data sebelum ia boleh beroperasi.
(2) Respons HTTP
Respon HTTP merangkum operasi tulis sambungan asas dan boleh dianggap sebagai objek strim boleh tulis.
Kaedah maklumat pengepala mesej respons: kaedah res.setHeader() dan res.writeHeader(), anda boleh setHeader beberapa kali, tetapi anda mesti memanggil writeHeader untuk menulis sambungan untuk berkuat kuasa.
Sebahagian daripada kaedah isi mesej: kaedah res.write() dan res.end()
(3) acara pelayan HTTP
sambungan: Apabila klien mewujudkan sambungan TCP dengan pelayan, peristiwa sambungan dicetuskan
permintaan: Selepas mewujudkan sambungan TCP, lapisan bawah modul http mengabstrak permintaan HTTP dan respons HTTP daripada aliran data Apabila data permintaan dihantar ke pelayan, peristiwa itu dicetuskan selepas menghuraikan pengepala permintaan HTTP ; dalam res.end() Selepas itu, sambungan TCP tersedia untuk permintaan seterusnya.
tutup: Panggil kaedah pelayan.tutup untuk berhenti menerima sambungan baharu Peristiwa ini dicetuskan apabila semua sambungan sedia ada diputuskan.
semakTeruskan: Apabila sesetengah pelanggan menghantar data yang besar, mereka mula-mula menghantar permintaan dengan Jangkakan: 100-terus dalam pengepala ke pelayan, dan perkhidmatan mencetuskan acara ini;
sambung: Dicetuskan apabila pelanggan memulakan permintaan CONNECTnaik taraf: Apabila pelanggan meminta untuk menaik taraf protokol sambungan, ia perlu berunding dengan pelayan, dan pelanggan akan membawa medan Naik Taraf dalam pengepala permintaan
clientError: Pelanggan yang disambungkan menghantar ralat, dan apabila ralat dihantar ke pelayan, acara ini dicetuskan
(4) Pelanggan HTTP
Modul http menyediakan http.request(options, connect) untuk membina klien HTTP.
Klien HTTP adalah serupa dengan pelayan Dalam objek ClientRequest, acaranya dipanggil respons Apabila ClientRequest menghuraikan mesej respons, peristiwa respons dicetuskan sebaik sahaja pengepala respons dihuraikan dan objek respons ClientResponse. diluluskan untuk operasi. Mesej tindak balas seterusnya disediakan sebagai strim baca sahaja.
(5) acara klien HTTP
tindak balas: Peristiwa ini dicetuskan apabila klien yang sepadan dengan acara permintaan pelayan menerima respons selepas permintaan dikeluarkan.
soket: dicetuskan apabila sambungan yang diwujudkan dalam kumpulan sambungan asas diperuntukkan kepada objek permintaan semasa;
sambung: Apabila klien menghantar permintaan CONNECT ke pelayan, jika pelayan membalas dengan kod status 200, klien akan mencetuskan acara ini.naik taraf: Apabila klien menghantar permintaan Naik Taraf kepada pelayan, jika pelayan bertindak balas dengan status 101 Switching Protocols, klien akan mencetuskan acara ini.
teruskan: Selepas pelanggan menghantar pengepala Expect: 100-continue ke pelayan, ia cuba menghantar data yang lebih besar Jika pelayan membalas dengan status 100 continue, pelayan akan mencetuskan acara ini
Perkhidmatan WebSocket
WebSocket pertama kali muncul sebagai ciri penting HTML5 Berbanding dengan HTTP, ia mempunyai kelebihan berikut:(1) Pelanggan dan pelayan hanya mewujudkan satu sambungan TCP, jadi lebih sedikit sambungan boleh digunakan
(2) Pelayan WebSocket boleh menolak data kepada klien, yang jauh lebih fleksibel dan cekap daripada mod tindak balas permintaan HTTP
(3) Pengepala protokol yang lebih ringan, mengurangkan penghantaran data
Tiada perpustakaan WebSocket terbina dalam dalam Node, tetapi modul ws komuniti merangkumi pelaksanaan asas WebSocket seperti socket.io yang terkenal