从零开始学习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 相关文章推荐
Dom操作之兼容技巧分享
Sep 20 Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
Dec 30 Javascript
vue.js中Vue-router 2.0基础实践教程
May 08 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
jquery添加div实现消息聊天框
Feb 08 jQuery
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php 无限极分类
2008/03/27 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
javascript特殊用法示例介绍
2013/11/29 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python 修改列表中的元素方法
2018/06/26 Python
python实现京东秒杀功能
2018/07/30 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python中的协程深入理解
2019/06/10 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
入股协议书范本
2014/11/01 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
高中班长竞选稿
2015/11/20 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
小学教师教学反思
2016/02/24 职场文书