Node menyediakan modul pemrograman jaringan yang kaya
| Modul Node | protokol |
| bersih | TCP |
| dgram | UDP |
| http | Http |
| https | Https |
Acara layanan TCP dibagi menjadi dua kategori berikut
(1) Acara Server
Untuk server yang dibuat melalui net.createServer (), ini adalah instance Eventemitter, dan ada beberapa acara khusus:
Mendengarkan: dipicu setelah menelepon mendengarkan () untuk mengikat port atau soket domain, disingkat sebagai server.listen (port, pendengar), lulus melalui parameter kedua.
Koneksi: dipicu saat setiap soket klien terhubung ke server. Cara sederhana adalah dengan melewati parameter terakhir melalui net.createServer ().
Tutup: dipicu saat server ditutup. Setelah menelepon server.close (), server akan berhenti menerima koneksi soket baru, tetapi menjaga koneksi yang ada saat ini dan menunggu semua koneksi terputus, acara ini akan dipicu.
Kesalahan: Acara ini akan dipicu ketika pengecualian terjadi di server.
(2) Acara Koneksi
Server dapat mempertahankan koneksi dengan banyak klien secara bersamaan, objek aliran yang dapat ditulis dan dapat dibaca untuk setiap koneksi. Objek stream dapat digunakan untuk komunikasi antara server dan klien. Mereka dapat membaca data yang dikirim dari satu ujung dari satu ujung melalui peristiwa data, atau mengirim data dari satu ujung ke ujung lain melalui metode write ().
Data: Ketika satu sisi panggilan menulis () untuk mengirim data, sisi lain akan memicu acara data. Data yang disahkan oleh acara tersebut adalah data yang dikirim oleh Write ().
Akhir: Acara ini akan dipicu ketika kedua akhir koneksi mengirimkan data sirip.
Connect: Acara ini digunakan untuk klien dan akan dipecat ketika soket berhasil terhubung ke server.
Tiriskan: Ketika salah satu panggilan akhir, tulis () untuk mengirim data, akhir saat ini memicu acara tersebut.
Kesalahan: Saat pengecualian dikirim
Tutup: Dipecat saat soket benar -benar ditutup
Timeout: Ketika koneksi tidak lagi aktif setelah periode waktu tertentu, memicu acara untuk memberi tahu pengguna bahwa koneksi itu menganggur.
TCP memiliki strategi optimasi tertentu untuk paket data kecil di jaringan: algoritma Nagle, yang dipicu hanya ketika data mencapai jumlah tertentu.
Layanan UDP
UDP disebut Protokol Paket Pengguna, dan ini bukan layanan yang berorientasi pada koneksi. UDP di Node hanyalah instance EventeMitter, bukan instance stream, dengan acara kustom berikut:
(1) Pesan: Ketika soket UDP memantau port kartu jaringan dan menerima pesan, data yang dibawa oleh pemicu adalah objek buffer pesan dan informasi alamat jarak jauh.
(2) Mendengarkan: Acara ini dipicu ketika soket UDP mulai mendengarkan.
(3) Tutup: Acara ini dipicu ketika metode tutup () dipanggil, dan acara pesan tidak lagi dipicu. Jika peristiwa pesan perlu dipicu lagi, itu perlu disusun kembali.
(4) Kesalahan: dipicu saat pengecualian terjadi. Jika tidak didengarkan, itu akan dilemparkan secara langsung, menyebabkan proses keluar.
Layanan HTTP
Modul HTTP dalam simpul mewarisi dari server TCP (Modul NET), yang dapat mempertahankan koneksi dengan banyak klien. Karena tidak membuat utas untuk setiap koneksi dan mempertahankan jejak memori yang sangat rendah, ia dapat mencapai konkurensi yang tinggi. Perbedaan antara layanan HTTP dan layanan TCP adalah bahwa setelah Keepalive diaktifkan, sesi TCP dapat digunakan untuk beberapa permintaan dan tanggapan. Layanan TCP digunakan sebagai unit untuk koneksi, dan layanan HTTP digunakan sebagai unit untuk permintaan. Modul HTTP adalah merangkum proses penghubung ke permintaan.
Modul HTTP mengabstraksi bacaan dan penulisan soket yang digunakan untuk terhubung ke Objek ServerRequest dan ServerResponse, masing -masing sesuai dengan operasi permintaan dan respons.
(1) Permintaan HTTP
Untuk operasi baca dari koneksi TCP, modul HTTP merangkumnya sebagai objek serverRequest. Misalnya, bagian header req.method, req.url, req.headers, bagian data sistem pesan disarikan menjadi objek aliran hanya baca. Jika logika bisnis perlu membaca data dalam sistem pesan, aliran data perlu diselesaikan sebelum operasi dapat dilakukan.
(2) Respons HTTP
Respons HTTP merangkum operasi tulis dari koneksi yang mendasarinya, yang dapat dianggap sebagai objek aliran yang dapat ditulis.
Metode informasi header dari paket respons: res.setHeader () dan res.writeHeader () metode. Anda dapat setheader beberapa kali untuk pengaturan, tetapi Anda harus menelepon WriteHeader untuk menulis ke koneksi sebelum mulai berlaku.
Metode parsial pesan: res.write () dan res.end () metode
(3) Acara Server HTTP
Koneksi: Saat klien membuat koneksi TCP dengan server, acara koneksi dipicu
Permintaan: Setelah membuat koneksi TCP, modul HTTP mengabstraksi permintaan HTTP dan respons HTTP dari aliran data. Ketika data permintaan dikirim ke server, acara dipicu setelah header permintaan HTTP diuraikan; Setelah res.end (), koneksi TCP dapat digunakan untuk permintaan berikutnya.
Tutup: Menelepon server. Metode Close untuk berhenti menerima koneksi baru, memicu peristiwa ini ketika semua koneksi yang ada terputus.
CheckContinue: Ketika beberapa klien mengirim data yang lebih besar, mereka terlebih dahulu mengirim permintaan dengan harapan: 100-kontinue di header ke server, dan layanan memicu acara;
Hubungkan: dipicu saat klien memulai permintaan koneksi
Upgrade: Ketika klien memerlukan peningkatan protokol koneksi, ia perlu bernegosiasi dengan server. Klien akan membawa bidang Updagrade di header permintaan.
ClientError: Klien yang terhubung mengirimkan kesalahan, dan kesalahan ditransmisikan ke server dan acara dipicu.
(4) Klien HTTP
Modul HTTP menyediakan HTTP.Request (Opsi, Connect) untuk membangun klien HTTP.
Klien HTTP mirip dengan server. Dalam objek ClientRequest, acaranya disebut respons. Ketika ClientRequest menguraikan pesan respons, acara respons akan dipicu segera setelah header respons diuraikan. Pada saat yang sama, objek respons klien respons dilewatkan untuk operasi. Pesan respons selanjutnya disediakan dalam aliran hanya baca.
(5) Acara Klien HTTP
Tanggapan: Klien yang sesuai dengan acara permintaan di server memicu acara ketika permintaan ditanggapi setelah permintaan dikeluarkan.
Soket: Dipecat ketika koneksi yang ditetapkan di kumpulan koneksi yang mendasarinya ditugaskan ke objek permintaan saat ini;
Connect: Ketika klien mengirimkan permintaan koneksi ke server, jika server merespons 200 kode status, klien akan memicu acara tersebut.
Upgrade: Ketika klien menikmati permintaan peningkatan ketika klien menikmati server mengirim permintaan peningkatan, jika server menanggapi status protokol switching 101, klien akan memicu acara tersebut.
Lanjutkan: Setelah klien memprakarsai harapan: 100-continue header informasi ke server, ia mencoba untuk mengirim data yang lebih besar. Jika server merespons ke 100 status melanjutkan, server akan memicu acara tersebut
Layanan Websocket
Websocket pertama kali muncul sebagai fitur penting dari HTML5, dan memiliki keunggulan berikut dibandingkan http:
(1) Klien dan server hanya membuat koneksi TCP sekali, dan lebih sedikit koneksi yang dapat digunakan
(2) Server Websocket dapat mendorong data ke klien, yang jauh lebih fleksibel dan efisien daripada mode respons permintaan HTTP
(3) Header Protokol yang lebih ringan untuk mengurangi transmisi data
Tidak ada perpustakaan built-in Websocket di Node, tetapi modul WS komunitas merangkum implementasi WebSocket yang mendasari seperti socket.io yang terkenal