从零开始学习Node.js系列教程五:服务器监听方法示例


Posted in Javascript onApril 13, 2017

本文实例讲述了Node.js服务器监听方法。分享给大家供大家参考,具体如下:

httpsnifferInvoke.js

var http = require('http');
var sniffer = require('./httpsniffer');
var server = http.createServer(function(req, res){
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, World!\n');
});
sniffer.sniffOn(server);
server.listen(3000);

httpsniffer.js

//http sniffer 监听每个服务器事件,然后输出每个事件的相关信息
var url = require('url');
var util = require('util');
exports.sniffOn = function(server){
  server.on('request', function(req, res){
    util.log('e_request');
    util.log(reqToString(req));
  });
  server.on('close', function(error){
    util.log('e_close error=' + error);
  });
  server.on('checkContinue', function(req, res){
    util.log('e_checkContinue');
    util.log(reqToString(req));
    res.writeContinue();
  });
  server.on('upgrade', function(req, socket, head){
    util.log('e_upgrade');
    util.log(reqToString(req));
  });
  server.on('clientError', function(){
    util.log('e_clientError');
  });
}
var reqToString = function(req){
  var ret = 'request' + req.method + ' ' + req.httpVersion + ' ' + req.url + '\n';
  ret += JSON.stringify(url.parse(req.url, true)) + '\n';
  var keys = Object.keys(req.headers);
  for (var i = 0; i < keys.length; i++){
    var key = keys[i];
    ret += i + ' ' + key + ': ' + req.headers[key] + '\n';
  }
  if (req.trailers) ret += req.trailers + '\n';
  return ret;
}
exports.reqToString = reqToString;

从零开始学习Node.js系列教程五:服务器监听方法示例

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
jQuery图片播放8款精美插件分享
Feb 17 Javascript
动态添加删除表格行的js实现代码
Feb 28 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
详解javascript new的运行机制
Jan 26 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
JS实现字符串去重及数组去重的方法示例
Apr 21 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 #Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 #Javascript
JS传参及动态修改页面布局
Apr 13 #Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 #Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
Apr 13 #Javascript
MUI  Scroll插件的使用详解
Apr 13 #Javascript
MUI 上拉刷新/下拉加载功能实例代码
Apr 13 #Javascript
You might like
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
图片之间的切换
2006/06/26 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
Js apply方法详解
2017/02/16 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
实例讲解React 组件
2020/07/07 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python grpc超时机制代码示例
2020/09/14 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
python 实现逻辑回归
2020/12/30 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
Java语言程序设计测试题判断题部分
2013/01/06 面试题
团员学习总结的自我评价范文
2013/10/14 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
vue组件vue-esign实现电子签名
2022/04/21 Vue.js