这篇文章主要介绍了关于深入理解Node的HTTP核心模块,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
HTTP
创建一个服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var http = require ( 'http' );
var fs = require ( 'fs' );
var url = require ( 'url' );
var serverHandle = function (req, res) {
var pathname = url.parse(req.url).pathname;
console.log(url.parse(req.url));
console.log(url.parse(req.url).pathname);
if (req.url !== "/favicon.ico" )
console.log(req.url);
console.log(pathname);
fs.readFile(pathname. substr (1), function (err, data) {
if (err) {
console.log(err);
res.writeHead(404, { "Content-Type" : "text/html" });
} else {
res.writeHead(200, { "Content-Type" : "text/html" });
res. end (data.toString());
}
})
};
var server = http.createServer(serverHandle);
server.listen(3000);
console.log( 'http is running at 127.0.0.1:3000' );
|
Salin selepas log masuk
监听连接和请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | var http = require ( 'http' );
var server = http.createServer();
server.on( 'request' , function (req,res) {
})
server.listen(3000,127.0.0.1);
server.on( 'listening' , function (){
console.log( '我监听连接,并且执行此回调函数!!' );
})
|
Salin selepas log masuk
connection 和 request的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 | server.on( 'connection' , function (socket) {
console.log(socket);
})
** connection 和 request的区别
客户端与服务端每次建立连接的时候会触发connection事件,
当服务端接受到客户端请求的时候,就会触发request事件。发送请求是建立在双方已经成功连接的接触之上
|
Salin selepas log masuk
通过请求获取客户端信息
当客户端与服务器连接后,服务器可以通过 http.IncommingMessage
实例化的对象(createServer方法中回调函数的第一个参数)的一些属性和方法来获取客户端的请求信息和读取客户端请求的数据。
1 2 3 4 5 6 7 8 | * method: 客户端请求方式
* url: 请求的地址
* headers: 客户端发送的请求头信息
* httpVersion: HTTP请求版本
* trailers: 客户端发送的trailers对象信息。只有IncommingMessage对象的 end 事件触发后才能读取到该信息。
* socket: 服务器端监听客户端请求的socket对象。
* data事件: 当服务器接收到客户端发送的请求数据时触发data事件。
* end 事件: 当客户端发送给服务器数据执行完毕时触发 end 事件。
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var http = require ( 'http' );
var serverHandle = function (req,res) {
console.log(req);
req.on( "data" , function (data){
console.log( "接收到的数据:" +decondeURIComponent(data));
});
req.on( "end" , function (){
console.log( "数据接收完毕" );
});
}
var server = http.createServer(serverHandle);
server.listen(3000);
server.on( 'listening' , function () {
console.log( '服务器启动中~~~' );
})
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var http = require ( 'http' );
var url = require ( 'url' );
var util = require ( 'util' );
var serverHandle = function (req,res) {
var parse = url.parse(req.url,true).query;
res.write( 'name' + parse.name);
res.write( 'url' + parse.url);
res. end ();
}
var server = http.createServer(serverHandle);
server.listen(3000);
server.on( 'listening' , function () {
console.log( '服务器启动中~~~' );
})
|
Salin selepas log masuk
响应客户端信息
利用http.ServerResponse
对象(createServer
方法或request
事件处理方法的第二个参数)向客户端发送数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
React+mongodb的使用与配置
关于Node模块机制的解析
Atas ialah kandungan terperinci 深入理解Node的HTTP核心模块. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!