从零开始学习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最佳实践之精妙的自定义事件
Aug 11 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
利用vue实现模态框组件
Dec 19 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
Express系列之multer上传的使用
Oct 27 Javascript
浅谈vue-router 路由传参的方法
Dec 27 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
vue实现分页加载效果
Dec 24 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 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
WINXP下apache+php4+mysql
2006/11/25 PHP
实用函数8
2007/11/08 PHP
php 图片上添加透明度渐变的效果
2009/06/29 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
YII框架常用技巧总结
2019/04/27 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
JavaScript中的事件处理
2008/01/16 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
python实现按任意键继续执行程序
2016/12/30 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python类中super() 的使用解析
2019/12/19 Python
信息管理专业学生自荐信格式
2013/09/22 职场文书
农行实习自我鉴定
2013/09/22 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
违章停车检讨书
2014/10/21 职场文书
催款函怎么写
2015/06/24 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL