var http = require('http');

/**
* 创建服务器的两种写法,第一种写法如下
* 由于server已经继承了EventEmitter的事件功能,所以可以使用高级函数编写方式监控事件
* @param {Function} request event
*/
var server = http.createServer(function(req,res)
{
//这里的req为http.serverRequest
res.writeHeader(200,{'Content-Type':'text/plain'});
res.end('hello world');
}); /**
* 说明:创建服务器的第二种写法
* 有关server对象的事件监听
* @param {Object} req 是http.IncomingMessag的一个实例,在keep-alive连接中支持多个请求
* @param {Object} res 是http.ServerResponse的一个实例
*/
var server = new http.Server();
server.on('request',function(req,res){
res.writeHeader(200,{'Content-Type':'text/plain'});
res.end('hello world');
}); /**
* 说明:新的TCP流建立时触发。 socket是一个net.Socket对象。 通常用户无需处理该事件。
* 特别注意,协议解析器绑定套接字时采用的方式使套接字不会触发readable事件。 还可以通过request.connection访问socket。
* @param {Object} socket
*/
server.on('connection',function(socket){}); /**
* 源API: Event: 'close'
* 说明:关闭服务器时触发
*/
server.on('close',function(){}); /**
* 说明:每当收到Expect: 100-continue的http请求时触发。 如果未监听该事件,服务器会酌情自动发送100 Continue响应。
* 处理该事件时,如果客户端可以继续发送请求主体则调用response.writeContinue, 如果不能则生成合适的HTTP响应(例如,400 请求无效)
* 需要注意到, 当这个事件触发并且被处理后, request 事件将不再会触发.
* @param {Object} req
* @param {Object} req
*/
server.on('checkContinue',function(req,res){}); /**
* 说明:如果客户端发起connect请求,如果服务器端没有监听,那么于客户端请求的该连接将会被关闭
* @param {Object} req 是该HTTP请求的参数,与request事件中的相同。
* @param {Object} socket 是服务端与客户端之间的网络套接字。需要自己写一个data事件监听数据流
* @param {Object} head 是一个Buffer实例,隧道流的第一个包,该参数可能为空。
*/
server.on('connect',function(req,socket,head){}); /**
* 说明:这个事件主要是对HTTP协议升级为其他协议后的事件监听,如果服务器端没有监听,那么于客户端请求的该连接将会被关闭
* @param {Object} req 是该HTTP请求的参数,与request事件中的相同。
* @param {Object} socket 是服务端与客户端之间的网络套接字。需要自己写一个data事件监听数据流
* @param {Object} head 是一个Buffer实例,升级后流的第一个包,该参数可能为空。
*/
server.on('upgrade',function(req,socket,head){}); /**
* 说明:如果一个客户端连接触发了一个 'error' 事件, 它就会转发到这里
* @param {Object} exception
* @param {Object} socket
*/
server.on('clientError',function(exception,socket){}); /**
* 源API:server.listen(port, [hostname], [backlog], [callback])
* 说明:监听一个 unix socket, 需要提供一个文件名而不是端口号和主机名。
* @param {Number} port 端口
* @param {String} host 主机
* @param {Number} backlog 等待队列的最大长度,决定于操作系统平台,默认是511
* @param {Function} callback 异步回调函数
*/
//server.listen(3000,'localhost',100,function(){}); /**
* 源API:server.listen(path, [callback])
* 说明:启动一个 UNIX 套接字服务器在所给路径 path 上监听连接。
* 可能用处:多路径或渠道数据来源监听分隔
* @param {String} path
* @param {Function} callback
*/
//server.listen('path',function(){}) /**
* 源API:server.listen(handle, [callback])
* 说明:Windows 不支持监听一个文件描述符。
* @param {Object} handle 变量可以被设置为server 或者 socket
* @param {Function} callback
*/
//server.listen({},function(){}); /**
* 说明:最大请求头数目限制, 默认 1000 个. 如果设置为0, 则代表不做任何限制.
* @type {number}
*/
server.maxHeadersCount = 1000; /**
* 源API:server.setTimeout(msecs, callback)
* 说明:为套接字设定超时值。如果一个超时发生,那么Server对象上会分发一个'timeout'事件,同时将套接字作为参数传递。
* 设置为0将阻止之后建立的连接的一切自动超时行为
* @param {Number} msecs
* @param
*/
server.setTimeout(1000,function(){}); /**
* 说明:一个套接字被判断为超时之前的闲置毫秒数。 默认 120000 (2 分钟)
* @type {number}
*/
server.timeout = 120000; /**
* 说明:这里的主机将是本地
* @param {Number} port 端口
* @param {Function} callback 异步回调函数
*/
server.listen(3000,function(){
console.log('Listen port 3000');
});

关于node的http模块的更多相关文章

  1. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...

  2. 运用node的文件系统模块批量修改文件名

      如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入f ...

  3. Node.js的模块载入方式与机制

    Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...

  4. Node.js Web模块

    什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...

  5. Node.js工具模块

    在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ...

  6. node.js基础模块http、网页分析工具cherrio实现爬虫

    node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...

  7. Node.js:模块

    概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 expor ...

  8. node.js之模块

    node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...

  9. 今天用node的cheerio模块做了个某乎的爬虫

        一时兴起,想做个爬虫,经过各种深思熟虑,最后选择了某乎,毕竟现在某乎的数据质量还是挺高的.说干就干 打开某乎首页,随便搜索了一串关键字,相关的问题和答案就展现在眼前,我就思考怎么把这些搜索结果 ...

  10. Node.js的安装以及Node.js的模块管理

    索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...

随机推荐

  1. 你该知道的-SQL里的这些新语法-函数

    前言 最近帮客户做数据库优化的时候发现客户系统使用了很多函数,自己竟然不知道是干啥的,好歹做过好几年开发的我必然不能忍!于是翻了翻资料自己学习了一下随便也分享给群友. 巧用函数的霸气作用———我做开发 ...

  2. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  3. 火狐浏览器URL中传中文参数乱码问题

    火狐浏览器:前端页面传中文 <span data-bind=" check_action:'roleMenuPriv'"> <a data-bind=" ...

  4. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  5. GO语言总结(4)——映射(Map)

    上一篇博客介绍了Go语言的数组和切片——GO语言总结(3)——数组和切片,本篇博客介绍Go语言的映射(Map) 映射是一种内置的数据结构,用来保存键值对的无序集合. (1)映射的创建 make ( m ...

  6. [LeetCode] Reverse Linked List 倒置链表

    Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either i ...

  7. VehicleCamera解读

    坐标系: z-axis ^ | | y-axis | / | / |/ +----------------> x-axis 围绕Z轴旋转叫做偏航角,Yaw:围绕X轴旋转叫做 俯仰角,Pitch: ...

  8. 用EmEditor实现PDF转Word后的对齐排版

    Redraw = false//禁止重绘(类似于VBA中的: Application.screenupdating=FALSE),以提高运行效率 //去除所有空行和只由空白字符构成的行 documen ...

  9. iOS10推送通知适配

    iOS10推送新增了UserNotifications Framework,使用起来其实很简单. 只是在iOS10以上系统上点击通知栏,回调方法不再走原来的这两个方法 - (void)applicat ...

  10. Quartz定时任务

    spring多个定时任务quartz配置 例子1: biz-quartz-context.xml配置 <?xml version="1.0" encoding="U ...