node.js
liangklfang
https://github.com/liangklfangl
展开
-
Node.js中的etag包知识学习之express的配置etag
原文地址 :阅读原文 API为:etag(entity, [options]) 这个方法为给定的实体产生一个strong etag。这个方法必须获取这个实体的完整内容。可以是Buffer,可以是fs.Stats。默认情况下,这个strong etag的产生是不需要fs.Stats的,因为这个fs.Stats会产生weak Etag而不是strong etag,不过这种默认行为可以通过原创 2016-04-03 14:57:27 · 5246 阅读 · 0 评论 -
从底层看看HTTP模块的构建之net模块深入理解
问题1:如何创建一个TCP服务器?net.createServer([options][, connectionListener])创建一个Server对象,参数connectionListener作为'connection'事件的监听函数,这个options有如下的默认值: { allowHalfOpen: false,//自己不会自动发送FIN字段 pauseOnCon原创 2016-04-16 16:10:24 · 2467 阅读 · 0 评论 -
又论Node.js的HTTP模块之深入理解
问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时出发?注意:在开启keepalive后,一个TCP会话可以用于多次请求和响应,在请求产生的过程中,http模块拿到传递过来的数据,调用二进制模块http_parser模块进行解析,在解析完请求报文的报文头以后,触发request事件,调用用户的业务逻辑。原创 2016-04-15 18:08:18 · 9444 阅读 · 2 评论 -
Node.js的TLS/SSL模块详解
第一步:我们自己扮演CA机构,给自己的服务器颁发签名证书,这个证书是CA机构的证书openssl genrsa -out ca.key 1024//这里是CA生成的私钥,文件名为ca.keyopenssl req -new -key ca.key -out ca.csr//这里是CA通过自己的私钥生成CSR文件,文件名为ca.csropenssl x509 -req -in ca.cs原创 2016-04-28 12:27:12 · 3996 阅读 · 0 评论 -
Node.js的cluster模块用于使用多核CPU
我们来看看cluster内部的机制:EventEmitter { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, Worker://有一个worker对象 { [Function: Worker] super_: { [Function: EventEmi原创 2016-04-13 10:36:19 · 1340 阅读 · 0 评论 -
从Node.js的child_process模块来学习父子进程之间的通信
child_process模块提供了和popen(3)一样的方式来产生自进程,这个功能主要是通过child_process.spawn函数来提供的:const spawn = require('child_process').spawn;const ls = spawn('ls', ['-lh', '/usr']);ls.stdout.on('data', (data) => { co原创 2016-04-11 21:15:48 · 23764 阅读 · 1 评论 -
Node.js如何把单个文件夹作为模块加载以及模块缓存
问题1:利用package.json来指定文件夹 package.json中内容如下:{ "name" : "some-library", "main" : "./lib/hello.js" }文件目录如下:require.js内容如下:var b=require('./some-library');console.log(b.name);some-library/原创 2016-03-26 11:13:58 · 2354 阅读 · 0 评论 -
Express框架之connect-flash详解
第一步:我们首先来看看这个插件的使用var flash = require('connect-flash');app.use(flash());//Express使用这个插件原创 2016-04-07 16:07:40 · 9070 阅读 · 0 评论 -
node.js中express-session配置项详解
官方地址:阅读作用:用指定的参数创建一个session中间件,sesison数据不是保存在cookie中,仅仅sessionID保存到cookie中,session的数据仅仅保存在服务器端警告:默认的服务器端的session存储,MemoryStore不是为了生产环境创建的,大多数情况下会内存泄露,主要用于测试和开发环境接受的参数: cookie:也就是session ID的c原创 2016-03-28 17:18:33 · 29557 阅读 · 1 评论 -
Express框架之express-session的插件的攻坚战
第一步:我们看看req对象在Express中被封装了那些内容(简易版): httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, headers:{}, rawHeaders:[], trailers: {}, rawTrailers: [], upgrade:原创 2016-04-06 16:03:02 · 4052 阅读 · 1 评论 -
Cookie-Parser是如何解析签名后的cookie的(同时对cookie和cookie-signature进行说明)
第一步:我们来学习一下cookie-signature:var cookie=require('./index');var val = cookie.sign('hello', 'tobiiscool');console.log(val);//打印hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI var unsign=cookie.un原创 2016-04-06 10:47:07 · 7573 阅读 · 3 评论 -
仔细聊聊Express中应用级的设置项
首先我们来看看应用级的settings中都包含什么内容:settings: { 'x-powered-by': true, //启用HTTP的头字段"X-Powered-By: Express,默认为true etag: 'weak', //设置http的Etag请求头,默认情况下是weak。etag设置的时候可以使用一些选项,但是这些选项只能用于动态文件而非静态文原创 2016-04-03 15:40:22 · 2931 阅读 · 0 评论 -
详细分析Node.js中的UDP模块
问题1:UDP模块的socket的内部签名是什么?Socket { domain: null, _events: { message: [Function], listening: [Function] }, _eventsCount: 2, _maxListeners: undefined, _handle: UDP { fd: undefined,原创 2016-04-16 20:04:01 · 6648 阅读 · 1 评论