下面是参考<Jquery、Jquery UI 及Jquery Mobile>一书中的nodej服务器程序

var http = require('http'),
url = require('url'),
fs = require('fs');
http.createServer(function (req, res) {
var reqData = {
url: url.parse(req.url, true),
method: req.method,
headers: req.headers },
path = reqData.url.pathname; if(path.match(/^\/[0-9a-z\-]+\.(html)|(json)|(xml)$/))
fs.readFile('.' + path, function (err, data) {
if (err) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('not found');
}
else {
if(path.split('.')[1] == 'html')
res.writeHead(200, {'Content-Type': 'text/html'});
else if(path.split('.')[1] == 'xml')
res.writeHead(200, {'Content-Type': 'application/xml'});
else
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(data);
}
});
else if(path == '/return-http-headers') {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify(reqData));
}
else if(path == '/sleep') {
var endTime = new Date().getTime() + 2000;
while (new Date().getTime() < endTime);
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('slow response');
}
else if(path == '/validate') {
var keys = [];
for(var key in reqData.url.query) {
if(reqData.url.query[key] == '')
keys.push(key);
}
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify(keys));
}
else if(path == '/redirect') {
res.writeHead(302, {
'Location': '/test-values.json' });
res.end();
}
else if(path == '/fail\-on\-purpose') {
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('unexpected" error');
}
else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('not found');
}
}).listen(1337, "localhost");
console.log('Server running at http://localhost:1337/');

nodejs的简单服务器程序的更多相关文章

  1. Socket编程回顾,一个最简单服务器程序

    第一次接触服务器是快毕业的时候,是不是有点晚(# ̄ω ̄),这也导致工作方向一直没考虑网络编程这块,做了好多其他没啥“意思”的技术. 之前看到一篇博文提到程序猿80%都是庸才,10%是人才,10%是天才 ...

  2. nodeJs搭建简单服务器

    实现简单的例子:hello word 把第一个文件命名为server.js 在server.js里写入 var http  = require("http"); http.crea ...

  3. 最简单的回射客户/服务器程序、time_wait 状态

    下面通过最简单的客户端/服务器程序的实例来学习socket API. echoser.c 程序的功能是从客户端读取字符然后直接回射回去.  C++ Code  1 2 3 4 5 6 7 8 9 10 ...

  4. Linux下select的用法--实现一个简单的回射服务器程序

    1.先看man手册 SYNOPSIS       /* According to POSIX.1-2001 */       #include <sys/select.h>       / ...

  5. nodejs学习之简单服务器的编写

    不废话了!直接上代码: var http = require('http'); //导入模块http http.createServer(function(request,response){ res ...

  6. Socket创建简单服务器和客户端程序

    使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...

  7. Node安装及搭建简单服务器

    注:本文安装系统为mac,windows及其他系统下载对应安装包 ,mac下载后的安装包为apk文件,windows为msi文件. 安装 1.在网上下载node安装包,官方网站2.双击下载文件,按步骤 ...

  8. nodejs搭建web服务器初级

    nodejs搭建简单的web服务器 1.1简介 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快 ...

  9. Nodejs创建HTTPS服务器

    Nodejs创建HTTPS服务器 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Jav ...

随机推荐

  1. 如何向java后台的对象中传数组

    1.后台对象的参数需要是是list对象 /* * copyright : GLOBALROAM Ptd Ltd * VmCreateInfo.java * Author: * zhangpengyan ...

  2. window.onload,<body onload="function()">, document.onreadystatechange, httpRequest.onreadystatechang

    部分内容参考:http://www.aspbc.com/tech/showtech.asp?id=1256 在开发的过程中,经常使用window.onload和body onload两种,很少使用do ...

  3. Hibernate学习笔记(一):mycelipse建立项目流程(未完成)

    1.部署数据库: 2.部署项目: 3.引入Hibernate: 4.url配置

  4. Java Load Properties 文件,定义message信息

    初始化Properties对象,load properties文件: private static final Properties MESSAGERESOURCES = new Properties ...

  5. Taum and B'day

    //自己 def main(): t = int(raw_input()) for _ in range(t): units = 0 b, w = map(int, raw_input().strip ...

  6. python描述符 descriptor

    descriptor 在python中,如果一个新式类定义了__get__, __set__, __delete__方法中的一个或者多个,那么称之为descriptor.descriptor通常用来改 ...

  7. 最新版AltiumDesignerSummer9下载+破解

    下载地址:ed2k://|file|AltiumDesignerSummer9Build9.3.1.19182.7z|1875307483|e65d364bf987fb5dcfb81c081a1562 ...

  8. Windows 8.1 with Update 镜像下载(增OEM单语言版)

    该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...

  9. C51工具是怎么进行覆盖分析的

    C51工具针对8051微控制器的有限存储器资源进行了优化设计. 为了最有效地利用存储器,根据一个很容易解释的方法,自动变量和函数参数在存储器中均进行覆盖处理. 首先,连接器根据源程序生成调用树.例如: ...

  10. Static, Shared Dynamic and Loadable Linux Libraries

    转载:http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html Why libraries are used: Th ...