From 8e71383429fd948e563137c87f7a5c8711a6640d Mon Sep 17 00:00:00 2001 From: tinyMay Date: Wed, 11 Oct 2017 20:15:39 +0800 Subject: [PATCH] =?UTF-8?q?node=E5=AD=A6=E4=B9=A0=E4=B8=8E=E5=AE=9E?= =?UTF-8?q?=E8=B7=B5=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A,=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E6=9C=8D=E5=8A=A1=E9=83=A8=E5=88=86=E4=B9=8B50%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/2016.11.08-node-http/.DS_Store | Bin 0 -> 6148 bytes .../2016.11.08-node-http/chunkRes/html.js | 5 +++- .../client/eventResponse.js | 12 +++++++- examples/2016.11.08-node-http/http.js | 3 +- .../httpServerEventConnectClient.js | 4 ++- .../httpServerEventError.js | 1 + .../2016.11.08-node-http/serverReq/.DS_Store | Bin 0 -> 6148 bytes .../serverReq/eventAbortedClient.js | 15 ++++++---- .../serverReq/eventAbortedServer.js | 3 ++ .../serverReq/getClientPostBody.js | 7 ++++- .../serverReq/reqDestroy.js | 10 +++++-- .../2016.11.08-node-http/serverRes/basic.js | 27 ++++++++++++++++-- .../serverRes/setTimeout.js | 20 +++++++------ 13 files changed, 83 insertions(+), 24 deletions(-) create mode 100644 examples/2016.11.08-node-http/.DS_Store create mode 100644 examples/2016.11.08-node-http/serverReq/.DS_Store diff --git a/examples/2016.11.08-node-http/.DS_Store b/examples/2016.11.08-node-http/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3d9529a2384986998ae38b3d5e2c3c104a55bd17 GIT binary patch literal 6148 zcmeHKJ8r^25S50*nt8jk z^Vae!JRT9z^<}>jX+>lSH$L^GgImoVZicl}5WF1&y&Yp? f?fBJ;qORB)=QVK%bUN}*2l8jYbfHm!M=S6JpA{8& literal 0 HcmV?d00001 diff --git a/examples/2016.11.08-node-http/chunkRes/html.js b/examples/2016.11.08-node-http/chunkRes/html.js index 51708ac..4efb878 100644 --- a/examples/2016.11.08-node-http/chunkRes/html.js +++ b/examples/2016.11.08-node-http/chunkRes/html.js @@ -1,5 +1,8 @@ var http = require('http'); +// 如果Content-Type是 text/html 则访问页面显示hello , 两秒后又被附加 world +// 如果Content-Type是 text/html 则访问页面会延迟两秒才打开,直接显示 hello world +// 而且 setTimeout里的 res.en()语句不能放在外面,否则会报错 Error: write after end http.createServer(function(req, res) { res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.write('hello'); @@ -8,5 +11,5 @@ http.createServer(function(req, res) { res.write(' world!'); res.end(); }, 3000); - + }).listen(3000); \ No newline at end of file diff --git a/examples/2016.11.08-node-http/client/eventResponse.js b/examples/2016.11.08-node-http/client/eventResponse.js index 7306eb5..3b94508 100644 --- a/examples/2016.11.08-node-http/client/eventResponse.js +++ b/examples/2016.11.08-node-http/client/eventResponse.js @@ -1,8 +1,18 @@ var http = require('http'); -var url = 'http://id.qq.com/'; +// var url = 'http://id.qq.com/'; +var url = 'http://127.0.0.1:3000'; +var server = http.createServer(function(req, res) { + var url = req.url; + res.writeHead(200, { + 'Content-Type': 'text/html;charset=utf-8' + }) + res.end("您要访问的地址是"+url); +}) +server.listen(3000); var client = http.get(url, function(res){ + res.pipe(process.stdout); console.log('1. response event'); }); diff --git a/examples/2016.11.08-node-http/http.js b/examples/2016.11.08-node-http/http.js index ce77e97..6477077 100644 --- a/examples/2016.11.08-node-http/http.js +++ b/examples/2016.11.08-node-http/http.js @@ -3,9 +3,10 @@ var http = require('http'); var server = http.createServer(function(serverReq, serverRes){ serverRes.end('hello'); }); - +// 会在本地3000端口输出hello server.listen(3000); +// 有下面这个才会在vim命令执行后紧接着输出上面的 hello 返回语句 var client = http.get('http://127.0.0.1:3000', function(clientRes){ clientRes.pipe(process.stdout); }); \ No newline at end of file diff --git a/examples/2016.11.08-node-http/httpServerEventConnectClient.js b/examples/2016.11.08-node-http/httpServerEventConnectClient.js index deb8a37..a7c87a4 100644 --- a/examples/2016.11.08-node-http/httpServerEventConnectClient.js +++ b/examples/2016.11.08-node-http/httpServerEventConnectClient.js @@ -1,10 +1,12 @@ +// 运行不了 !!!!!!! + var qs = require("querystring"); var http = require("http"); var options = { "method": "CONNECT", "hostname": "127.0.0.1", - "port": "3000", + "port": "4000", "path": "/", "headers": { "content-type": "application/x-www-form-urlencoded", diff --git a/examples/2016.11.08-node-http/httpServerEventError.js b/examples/2016.11.08-node-http/httpServerEventError.js index ebca147..5e58094 100644 --- a/examples/2016.11.08-node-http/httpServerEventError.js +++ b/examples/2016.11.08-node-http/httpServerEventError.js @@ -2,6 +2,7 @@ var http = require('http'); var PORT = 3000; var noop = function(){}; +// 这个例子是在监测服务端口占用问题 var svr = http.createServer(noop); var anotherSvr = http.createServer(noop); diff --git a/examples/2016.11.08-node-http/serverReq/.DS_Store b/examples/2016.11.08-node-http/serverReq/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..27e9a46b863f499a628180702fcf45f4c11a2ee3 GIT binary patch literal 6148 zcmeHK%}N6?5dNY)6h&A;!Q&o13BJL$R;4$!FCcAKQH#ZGD|p+-@S%JF-$uWg4BDUQ zQKZbk%$H5_O_FcfWCI|yXTxJ41JI-kHntcNChg)YwqZ5W7&ONeE%Y%)h3QIfuW$ui zf&Zp}e7pN7@l1c@SNr|_mKfp$Bivcb5$-YRj>d!jXxt}Dwv03S;fESazh&w%OQoY! zNM(9k%Cv`DGNubNIM

%rw_aDo?mt%9ADXbh*+S?ox?)g!d(WY91HlPB^zVafswR zRGHT~Wp=pw5>Mzb3b!IR%@if(nOTzA;+q*IS0D<^^LLHk|H zfsbx$r~uDwvF3I}kFJ0#;0k;xAp1j37c30xh`Mz!=oNt2V6_^{@?#*J+^{gLBeI1S zB9$1a!LAq~(pjHdzrwJN80iRh`3N?0up3Iy(V0Kj?g&LhkFJ0#u&BUhe9YwhKmGas zzew^YSHKlmD+NNM)9bXkBs*JI7AI$IPQRv$NxwRxQW)$w)`A?x2Xr;I end req.on('data', function(thunk){ body += thunk; }); diff --git a/examples/2016.11.08-node-http/serverReq/reqDestroy.js b/examples/2016.11.08-node-http/serverReq/reqDestroy.js index 99cf9ff..582e34e 100644 --- a/examples/2016.11.08-node-http/serverReq/reqDestroy.js +++ b/examples/2016.11.08-node-http/serverReq/reqDestroy.js @@ -24,8 +24,14 @@ server.listen(3000, function(){ var client = http.get('http://127.0.0.1:3000/aborted', function(res){ // do nothing }); - + // 此例之所以会触发 client error 是因为 createServer里没有给 res.end(), + // 若给了,即时req中destroy也不会触发 client error client.on('error', function(error){ console.log('客户端:client error触发!' + error.message); }); -}); \ No newline at end of file +}); + +// 控制台输出如下: +// 服务端:收到客户端请求 +// 服务端:req socket error: 测试destroy +// 客户端:client error触发!socket hang up \ No newline at end of file diff --git a/examples/2016.11.08-node-http/serverRes/basic.js b/examples/2016.11.08-node-http/serverRes/basic.js index df2d6f4..2550597 100644 --- a/examples/2016.11.08-node-http/serverRes/basic.js +++ b/examples/2016.11.08-node-http/serverRes/basic.js @@ -1,21 +1,42 @@ var http = require('http'); +// 1, 这里如果 res.send("xxx")会报错 : res.send is not a function , 为什么呢??? +// 2, 想要设置200/ok,可以 res.writeHead(200, 'ok'); +// 也可以 res.statusCode = 200; res.statusMessage = 'ok'; +// 3, 已经通过 res.setHeader() 设置了header, +// 当通过 res.writeHead() 设置同名header,res.writeHead() 的设置会覆盖之前的设置。 +// 但 writeHeader之后就不能再用setHeader, 否则报错 Error: Can't set headers after they are sent.。 +// 4,响应头部操作 +// // 增 +// res.setHeader('Content-Type', 'text/plain'); +// // 删 +// res.removeHeader('Content-Type'); +// // 改 +// res.setHeader('Content-Type', 'text/plain'); +// res.setHeader('Content-Type', 'text/html'); // 覆盖 +// // 查 +// res.getHeader('content-type'); +// 其中略显不同的是 res.getHeader(name),name 用的是小写,但返回值没做特殊处理。 var server = http.createServer(function(req, res){ - + // res.setHeader('Content-Type', 'text/html'); res.writeHead(200, 'ok', { - 'Content-Type': 'text/plain; charset=utf-8', + 'Content-Type': 'text/html; charset=utf-8', // 'X-Content-Type-Options': 'nosniff' // 'Connection': 'Transfer-Encoding', // 'Transfer-Encoding': 'chunked' }); + res.write('hello'); // res.setTimeout(2000); // res.write('world'); setTimeout(function(){ - res.end() + res.write('world'); + res.end(); }, 2000) // res.end(); + // res.send("ok") + }); server.listen(3000); \ No newline at end of file diff --git a/examples/2016.11.08-node-http/serverRes/setTimeout.js b/examples/2016.11.08-node-http/serverRes/setTimeout.js index a6e3a24..1435d56 100644 --- a/examples/2016.11.08-node-http/serverRes/setTimeout.js +++ b/examples/2016.11.08-node-http/serverRes/setTimeout.js @@ -1,16 +1,18 @@ var http = require('http'); +// 在命令号执行此文件后,会触发两次 = =b1,一次是因为server里主动一次,另一次是因为下面client语句又去请求一次 + // 而 b3 , b4都不会触发 var server = http.createServer(function(req, res){ - res.setTimeout(1000); - // res.setTimeout(1000, function(socket){ - // console.log(typeof socket); - // console.log('= =b') - // }); + // res.setTimeout(1000); + res.setTimeout(1000, function(socket){ + console.log(typeof socket); + console.log('= =b1') + }); }); // server.on('timeout', function(socket){ -// // console.log(typeof socket); -// // console.log('= =b') +// console.log(typeof socket); +// console.log('= =b2') // }); server.listen(3000); @@ -18,11 +20,11 @@ server.listen(3000); var client = http.get('http://127.0.0.1:3000', function(res){ res.on('timeout', function(socket){ console.log(typeof socket); - console.log('= =b') + console.log('= =b3') }); }); client.on('timeout', function(socket){ console.log(typeof socket); - console.log('= =b') + console.log('= =b4') }); \ No newline at end of file