NodeJS http Server
来源:互联网 发布:马赛克去除软件注册码 编辑:程序博客网 时间:2024/05/16 04:31
HTTP
如果要使用HTTP 的server 以及client 模块则
必须使用require('http')
加载http 模块
NODE 中的HTTP 接口
被设计成为支持HTTP 协议的很多特性,
这些特性通常那难以掌控,特别是 large
,possiblechunk-encoded(块编码)
,messages
。
这个接口特意不缓冲整个请求(request)或者响应(responses)。
使用户可以使用流 的形式操作数据。
以下是用对象的形式表示的HTTP 信息头
{ 'content-length': '123' , 'content-type': 'text/plain' , 'stream': 'keep-alive' , 'accept': '*/*' }
所有key 都是小写,数值不能被修改
为了支持尽可能多的HTTP 应用,
NODE 的HTTP API 非常底层。
HTTP API只处理到流(stream)相关的操作以及信息解析。
API 将信息解析成为信息头和信息体,
但并不解析实际的信息头和信息体的具体内容。
如果在基础平台上的OpenSSL
是可用的
则HTTPS 也能够被支持。
http.Server
这个模块会触发以下事件
1. Event: ‘request’
function(request,response){}
request是http.ServerRequest的一个实例。
而response则是http.ServerResponse的一个实例。
每个请求发生的时候均会被触发。
请记住,每个连接可能会有多个请求(在keep-alive永久连接情况下)。
2. Event: ‘connection’
function(stream){}
当一个新的TCP Steam建立后发出此消息(?),
stream是一个net.stream
的对象,通常用户不会访问/使用这个事件。
参数stream也可以在request.connection
中访问到。
3. Event: ‘close’
function (errno){}
当服务器关闭的时候触发此类事件。
4. Event: ‘upgrade’
function(request,socket,head){}
每当一个客户端请求一个http upgrade
时候发出此消息。
这个upgrade请求是个啥请求?
向服务器指定某种传输协议以便服务器进行转换(如果支持)
如果这个事件没有监听,那么请求upgrade的客户端对应的连接将会被关闭。
- 参数
request
代表了一个http请求,和request
事件的参数意义是相同的。 - socket是在服务器与客户端之间连接用的网络套接字(IP和端口)
head
是Buffer
的一个实例,是upgraded stream所发出的第一个包,这个参数可以为空。
当此类事件被触发后,该请求所使用的socket并不会有一个数据(data)
事件的监听者(listener)
,这意味着你如果需要处理通过这个socket发送到服务端的数据的话则需要自己绑定数据事件监听器。
5 . Event: ‘clientError’
function(exception){}
如果一个客户端连接的error
事件被触发,这个函数将会被执行。
1. http.createServer(requestListener)
创建一个服务器,返回一个新的server对象。
requestListener是一个会去自动监听request
事件的函数。
2. server.listen(port, [hostname], [callback])
在指定端口
和主机名
上接受连接。
如果hostname 没有写,
这个服务器将直接在此机器的所有IPV4地址上
接受连 接(INADDR_ANY)
.
如果要在UNIX SOCKET
上监听的话,
则需要提供一个文件名来替换端口和主机名
.
这个方法是一个异步的方法,
作为最后一个参数的回调方法将在服务器已经在此端口上绑定好后
被调用.
结合1
和2
举个例子就是下面的代码
var http = require('http')http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }) res.end('Hello World\n')}).listen(3000, function () { console.log('Listening on port 3000') })
说明: function(req,res)
就是1
中所说的requestListener函数
3. server.listen(path, [callback])
建立一个UNIX SOCKET 服务器
并在指定路径监听。
这个方法是一个异步的方法,
作为最后一个参数的回调方法将在服务器已经在此端口上绑定好后被调用。
4. server.setSecure(credentials)
允许此服务器支持HTTS
,配合crypto 模块credentials
指定私钥
以及此服务器的证书
,
并且也可选择数字中心认 证的证书作为客户端的认证(方式)
。
如果authentication
中有一或多个数字认证中心证书,
则服务器将请求客户端发出一个客户端证书作为HTTPS 握手
的一部分。想要验证、访问证书合法性及内容则可以
通过服务器的request.connection
的verifyPeer()
以及 getPeerCertificate()
来实现。
5. server.close()
使此服务器停止接受任何新连接。
6. server.maxConnections
设置此属性使服务器的连接数高于此数值时拒绝连接。
7. server.connections
代表当前服务器的连接数。
小结
http.Server这个模块有
事件
- request
- connection
- close
- upgrade
- clientError
方法
- http.createServer(requestListener)
- server.listen(port, [hostname], [callback])
- server.listen(path, [callback])
- server.setSecure(credentials)
- server.close()
- server.maxConnections
- server.connections
- nodejs 创建http server
- NodeJS http Server
- Nodejs实现简单http server
- Nodejs http server "Hello world"
- Multi-Core HTTP Server with NodeJS
- Win10 Nodejs搭建http-server注意点
- Nodejs-npm包之http-server和json-server
- 用nodejs搭建最简单、轻量化的http server
- 用nodejs搭建最简单、轻量化的http server
- nodejs 原生代码模拟express 框架 创建http server
- 用nodejs搭建最简单、轻量化的http server
- 用nodejs搭建最简单、轻量化的http server
- nodejs--http
- nodejs-http
- NodeJS-http
- 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)
- 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)
- NodeJS http.ServerRequest & http.ServerResponse
- android的View加载过程
- THE INTERNET
- 蓝桥杯:矩阵翻硬币(大数开根号)
- [转载]垃圾收集分析(1)-Java对象结构(上)
- Android Framework学习(十一)之从ServiceManager获取Native层服务
- NodeJS http Server
- gradle 3.5遇到的大坑
- 霓虹灯的字体
- 04-树5 Root of AVL Tree (25分)
- 对于mongodb在linux上的的安装与其简单命令行操作的学习回顾
- redhat6.5更换为contos 的yum源
- Commitment, generosity guide Iranian Studies program to great heights
- [设计模式]备忘录模式(Memento)
- 四级高频词汇---词根串讲---day1