Rumah > Artikel > hujung hadapan web > Analisis mendalam tentang modul bersih dalam Nodejs
Artikel ini akan memperkenalkan anda kepada modul bersih dalam Nod Saya harap ia akan membantu anda!
Ini adalah artikel pertama dalam siri Nodejs Semasa saya menonton tutorial sebelum ini, kebanyakannya bermula dari IO, penimbal, laluan, acara, Mari kita mulakan dengan mekanisme gelung peristiwa fs, proses dan nod Ini sememangnya kebergantungan pembangunan yang bergantung kepada pembangunan nod Tetapi saya lebih bimbang Daripada mempelajari tentang nod, ini bermakna nod boleh melakukan bahagian belakang separuh daripada kursus ini adalah Untuk bercakap tentang keupayaan yang dimilikinya, ia adalah pengenalan modul tentang cara berkomunikasi dengan pelanggan pada penghujungnya.
Saya berasa sangat tidak selesa, jadi apabila saya menulis ringkasan saya sendiri, Saya mesti menulis modul yang berkomunikasi antara pelayan dan klien terlebih dahulu. Walaupun titik pengetahuan modul acara dan modul fs terlibat dalam proses, anda boleh mengetepikan sementara dan hanya memahami bagaimana net
. modul melaksanakan komunikasi secara keseluruhan
Jika anda ingin memahami modul komunikasi, anda perlu memahami model komunikasi rangkaian. . Jika anda ingin mengingati model komunikasi rangkaian, anda perlu mempraktikkannya untuk membantu ingatan Ini adalah fokus temu bual ia memerlukan kajian yang sistematik. Berikut adalah sebutan ringkas
Hantar gambar lama ini:
Untuk bahagian hadapan kita, kita perlu ingat sistem. keputusan suite protokol TCP/IP.
Lapisan aplikasi: http (port 80), FTP (21), SMTP ( Hantar mel), POP (terima mel), DNS
Lapisan pengangkutan: TCP/ UDP
Lapisan Internet: IP, ICMP (ialah protokol aksesori Lapisan IP)
Lapisan pautan data: PPP, SLIP
Lapisan fizikal: Rangkaian mempunyai pasangan terpiuh, kabel sepaksi, Gentian optik dan kaedah penghantaran lain mengikut spesifikasi ISO2110
Dari ICMP
protokol yang bergantung pada protokol IP ini, kita boleh tahu bahawa tidak perlu terlalu berat tentang pelapisan protokol rangkaian ICMP
Jelas sekali protokol IP adalah asas, tetapi ia juga dirancang sebagai lapisan rangkaian, saya fikir, pemahaman kami yang betul tentang model OSI adalah lebih bermakna untuk menggunakan model OSI untuk menganalisis masalah daripada menggunakan protokol yang dipanggil
Kluster protokol TCP/IP bukan sahaja merujuk kepada protokol TCP dan IP, tetapi kerana kedua-dua protokol ini terlalu terkeluar dari kalangan, TCP/IP digunakan untuk merujuk secara kolektif kepada koleksi berkaitan Internet protokol. Juga Terdapat cara lain untuk mengatakan ia adalah nama kolektif untuk keluarga protokol yang digunakan dalam penggunaan protokol TCP/IP.
Aliran penghantaran antara klien dan pelayan adalah seperti berikut
Jika watak menjadi 发送者
dan 接受者
, aliran penghantaran adalah seperti berikut:
Ia dapat dilihat bahawa semasa proses penghantaran, dari penghantaran Bermula dari hujung penerimaan, maklumat pengepala yang diperlukan akan ditambah tanpa melalui lapisan protokol semakan dan pengekodan lapisan demi lapisan ke hujung penerima, ia akan melakukan sebaliknya, menanggalkan pengepala yang sepadan selepas setiap lapisan Hanya tunggu sehingga akhir data HTTP yang diperolehi.
Di atas ialah model protokol rangkaian umum.Ragu: Mengapakah ia ada dalam buku selepas menggabungkan hasil sistem OSI ke dalam protokol lima lapisan TCP/IP di banyak tempat , adakah nama lapisan rangkaian akan menjadi lapisan Internet?Gambar di atas adalah daripada "Illustrated HTTP" <.>
Jabatan tangan ketiga: Selepas pelanggan memasuki keadaan penubuhan sambungan, ia menghantar bit bendera ACK (K 1) kepada pelayan untuk mengesahkan bahawa klien telah menerima penubuhan sambungan, dan pelayan telah menerima Selepas mencapai bendera ACK, pelayan memasuki keadaan sambungan yang telah ditetapkan.
J dan K digunakan untuk menentukan siapa yang meminta Tiada perbezaan dalam struktur SYN dan ACK, tetapi objek yang dihantar adalah berbeza >3. Modul bersih
Pertama sekali, untuk mempelajari API, anda masih disyorkan untuk pergi terus ke dokumentasi rasmi Kandungan dokumentasi Cina bukan versi terkini
bila belajar, Setiap kali saya ada masa untuk membaca dokumen Bahasa Inggeris, saya cuba membaca dokumen Bahasa Inggeris Saya telah menegaskan perkara ini selama setengah tahun saya tidak tahan pada mulanya, tetapi sekarang saya boleh menahan ketidakselesaan dan membacanya Kemajuan telah jelas dalam setengah tahun Dan Ketidakselesaan seperti ini adalah perkara yang baik, ini bermakna bahawa ini bukan zon selesa anda sumber kemajuanSeterusnya, mari kita ke intinya Memandangkan anda ingin mempelajari komunikasi, maka Kami memerlukan dua objek untuk mensimulasikan klien dan pelayan masing-masing . Cipta melalui baris arahan:
client.js
service.js
touch client.js && touch service.js
net
LISTENT
Pada masa ini, pelayan sepadan dengan status pelayan
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(post, host);
kemudian memantau beberapa acara yang diperlukan, iaitu cangkuk yang disediakan oleh pelayan (Milik pengetahuan berkaitan acara) LISTEN
Rentetan kod di atas melibatkan,
server.on("listening", () => { console.log("服务器已经可以连接啦"); }); server.on("connection", (socket) => { console.log("有客户端来访咯"); }); server.on("close", () => { console.log("服务器关闭了"); }); server.on("error", (error) => { console.log("服务器出错啦: ", error); // error 有错误的信息 });. : peristiwa dicetuskan selepas mendengar port
listening
: peristiwa dicetuskan apabila pelanggan melawatconnection
: Dicetuskan oleh penutupan pelayanclose
: Dicetuskan oleh ralat pelayanerror
Untuk close
Diproses dengan membunuh benang
ps kill -9 pidDalam
Gouzi, parameter formal ialah nama soket Terjemahan bahasa Cinanya ialah perkataan bersarang, yang dirangkumkan oleh nod ke dalam aliran (Strim). data itu sendiri mempunyai kaedah tersendiri. Saya memproses
dalamconnection
connection
socket
server.on("connection", (socket) => { console.log("有客户端来访咯"); socket.on("data", (data) => { console.log(data); // 客户端发送过来的数据 }); });
Memandangkan pelayan boleh menerima data yang dihantar oleh pelanggan, ia secara semula jadi boleh membalas kepada pelanggan Tuliskannya dalam
(tentunya ia juga boleh Ditulis di luar):
socket.on
Pada masa ini, jika pelanggan telah selesai menerima. data dan kemudian menutup sambungan. Kami juga boleh mendengarnya melalui cangkuk
socket.write("我已经收到你的服务器了哦,客户端");
socket.on('close‘)
Masukkan ringkasan acara
socket.on("close", () => { console.log("客户端把另外一头的流给关了"); });. Pada masa ini, semua kandungan
adalah seperti berikut: socket
client.js
service.js
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(post, host); server.on("listening", () => { console.log("服务器已经可以连接啦"); }); server.on("connection", (socket) => { console.log("有客户端来访咯"); socket.on("data", (data) => { console.log(data); // 客户端发送过来的数据 socket.write("我已经收到你的服务器了哦,客户端"); }); socket.on("close", () => { console.log("客户端把另外一头的流给关了"); server.close(); // 客户端已经不要数据了,那么我们就把服务器给关闭了吧 }); }); server.on("close", () => { console.log("服务器关闭了"); }); server.on("error", (error) => { console.log("服务器出错啦: ", error); // error 有错误的信息 });
Ringkasan peristiwa
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const socket = net.connect(post, host); socket.on("connect", () => { console.log("已经连接到服务器了哦"); }); socket.write("服务器, 我来了"); socket.on("data", (data) => { console.log(data.toString()); socket.end(); }); socket.on("close", () => { console.log("连接已关闭了"); });
socket
connect
: Menerima parameter yang dihantar oleh pelayan data
: Boleh dicetuskan selepas penerimaan data selesai end
: Dicetuskan oleh penutupan soket Jalankannya pada terminal: close
Lihat hasil cetakan sendiri.service.js
Artikel ini diterbitkan semula daripada: https://juejin.cn/post/7084618854801866765client.js
node service.js node client.jsUntuk lebih banyak nod- pengetahuan berkaitan, sila lawati:
tutorial nodejs
!Atas ialah kandungan terperinci Analisis mendalam tentang modul bersih dalam Nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!