`

node搭建简易服务器

 
阅读更多

如果完全用node做所有服务器端的事情,http://expressjs.com/框架是一个很好的选择,不过我们也可以在一些简易的应用场景使用node

root # node server.js

如果server.js被修改后,需要重新启动服务器才能生效,这点很不方便,不过supervisor可以很好地解决

安装supervisor,它会监控目录的服务文件有无变化(如果编辑后文件有语法错误,服务就没法运行了,所以要特别注意)

npm install supervisor -g
root:~/test # supervisor server.js

DEBUG: Running node-supervisor with
DEBUG:   program 'server.js'
DEBUG:   --watch '.'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js'
DEBUG:   --exec 'node'

DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/root/test' for changes.
Server running at http://127.0.0.1:8080/
DEBUG: crashing child
DEBUG: Starting child process with 'node server.js'
Server running at http://127.0.0.1:8080/

简单的Hello World服务器(simple.js)

var http = require('http');

// create http server
http.createServer(function (req, res) {
                // content header
                res.writeHead(200, {'content-type': 'text/plain'});
                // write message and signal communication is complete
                res.end("Hello, World!\n");
                }).listen(8124);

console.log('Server running on 8124/');

简单的http客户端(client.js)

var http = require('http');
//The url we want, plus the path and options we need
var options = {
host: 'localhost',
      port: 8124,
      path: '/?file=secondary',
      method: 'GET'
};
var processPublicTimeline = function(response) {
        // finished? ok, write the data to a file
        console.log('finished request' + response);
        console.log('STATUS: ' + response.statusCode);
        console.log('HEADERS: ' + JSON.stringify(response.headers));

        response.on('data', function (chunk) {
                        console.log('BODY: ' + chunk);
                        });
};
for (var i = 0; i < 5; i++) {
        // make the request, and then end it, to close the connection
        http.request(options, processPublicTimeline).end();
}

post数据代码如下

var http = require('http'),
    qs = require('qs');

//The url we want, plus the path and options we need
var options = {
    host: '127.0.0.1',
    port: 8080,
    path: '/add',
    method: 'POST'
};

var postdata = qs.stringify({
username:"User",
password:"Password"
});

var processPublicTimeline = function(response) {
        var body='';
        response.on('data', function (chunk) {
                body += chunk;
        });
        response.on('end',function() {
                console.log(body);
        });
        response.on('error', function(e) {
                console.log('problem with request: ' + e.message);
        });
};

var req = http.request(options, processPublicTimeline);
req.write(postdata);
req.end();

复杂服务器:支持静态文件服务以及自定义handler处理

var http = require("http"),
    url  = require("url"),
    path = require("path"),
    fs   = require("fs");

var handle = {}
handle["/"]            = rootHandler;
handle["/add"]         = addHandler;
handle["/save"]        = saveHandler;

http.createServer(function (req, res) {
    var pathname=url.parse(req.url).pathname;
    if(typeof handle[pathname] === "function"){
    	handle[pathname](res, req);
    }
    else {
        pathname=__dirname+url.parse(req.url).pathname;
        if (path.extname(pathname)=="") {
            pathname+="/";
        }
        if (pathname.charAt(pathname.length-1)=="/"){
            pathname+="index.html";
        }
        fs.exists(pathname,function(exists){
            if(exists){
                switch(path.extname(pathname)){
                case ".html":
                    res.writeHead(200, {"Content-Type": "text/html"});
                    break;
                case ".js":
                    res.writeHead(200, {"Content-Type": "text/javascript"});
                    break;
                case ".css":
                    res.writeHead(200, {"Content-Type": "text/css"});
                    break;
                case ".gif":
                    res.writeHead(200, {"Content-Type": "image/gif"});
                    break;
                case ".jpg":
                    res.writeHead(200, {"Content-Type": "image/jpeg"});
                    break;
                case ".png":
                    res.writeHead(200, {"Content-Type": "image/png"});
                    break;
                default:
                    res.writeHead(200, {"Content-Type": "application/octet-stream"});
                }
    
                fs.readFile(pathname,function (err,data){
                    res.end(data);
                });
            } else {
                res.writeHead(404, '404 Not Found', {'Content-Type': 'text/html'});
                res.end('<h1>404 Not Found</h1>');
            }
        });
    }
}).listen(8080, "0.0.0.0");

console.log("Server running at http://0.0.0.0:8080/");

function rootHandler(res, req){
    res.end("root");
}

function addHandler(res, req){//获取post数据
    if(req.method == 'POST'){
        var body = '';
        req.on('data', function (data) {
            body += data;
        });
        req.on('end', function () {
            var POST = qs.parse(body);
            console.log(POST);
        });
    }
    res.end("add");

}

function saveHandler(res, req){
    res.end("save");
}

 

分享到:
评论

相关推荐

    基于node.js简单搭建即时聊天服务器

    【标题】:“基于Node.js简单搭建即时聊天服务器” 在当今互联网时代,实时通信技术成为许多应用程序的核心组成部分,例如在线协作工具、游戏、社交应用等。本教程将介绍如何使用Node.js,一个流行的JavaScript运行...

    vue+koa2搭建mock数据环境的详细教程

    特以此篇,记录利用koa2搭建服务端,提供mock数据的方法。 初始化vue项目 这里以vue项目为主,当然别的类型项目依然可以使用这种mock数据的方式。 vue create vue-koa2-demo 前提是安装了vue-cli的脚手架,我电脑...

    简易IIS服务器(珍藏版)

    6. **运维应用**:对于运维人员来说,这种简易服务器可以快速建立本地测试环境,便于部署、调试和优化网站应用,而无需等待漫长的服务器配置过程。此外,它也可以作为临时的文件服务器,方便团队成员共享文件。 总...

    nodejs 搭建简易服务器的图文教程(推荐)

    搭建简易服务器的基本步骤如下: 1. 初始化项目 创建一个文件夹作为项目目录,例如命名为“MyWebServer”,然后在该目录下打开命令行工具,执行npm init命令初始化一个Node.js项目。此命令会要求输入项目的名称、...

    koa+postgresql+node后台简易管理系统

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行开发。Node.js以其事件驱动、非阻塞I/O模型而著称,这使得它在处理高并发场景下表现出色。在这个后台管理系统中,...

    【JavaScript源代码】使用node-media-server搭建一个简易的流媒体服务器.docx

    ### 使用node-media-server搭建简易流媒体服务器的知识点详解 #### 一、背景介绍与环境配置 在当前多媒体应用日益普及的背景下,搭建一个简易的流媒体服务器成为了许多开发者的需求之一。本文将详细介绍如何使用`...

    利用node.js如何搭建一个简易的即时响应服务器

    搭建简易即时响应服务器的关键知识点如下: 1. Node.js环境安装:由于文章开头提到,本文默认您已安装Node.js,所以首先需要确保您的开发环境中已安装Node.js。如果没有安装,可以通过官网下载安装包或者使用包管理...

    miniweb服务器一键搭建静态网站

    6. **安全性考虑**:尽管简易服务器方便快捷,但也需要注意安全问题。比如,确保只对外提供必要的页面,限制不必要的网络访问,定期更新软件以修补可能的安全漏洞。 7. **本地开发与测试**:对于开发者来说,这样的...

    抽奖大转盘+简易服务器

    简易服务器在该项目中起到的作用是托管抽奖大转盘的程序和相关数据。服务器可能是基于Node.js构建的,因为Node.js是一个流行的JavaScript后端框架,能够轻松地处理HTTP请求和静态文件服务。开发者可能使用了Express....

    快速搭建简易、高效、多线程http服务器

    通过Node.js来快速高效的搭建一个高性能http服务器,github上Charlie Robbins分享了一个开源项目,让大家都可以轻松的搭建临时高性能http服务器

    利用node.js搭建简单web服务器的方法教程

    在开始搭建Node.js简易Web服务器之前,我们先了解一下Web服务器的基本概念。Web服务器是用于处理HTTP请求并在客户端和服务器之间传输超文本的软件程序。当用户在浏览器输入网址时,Web服务器便开始与用户的计算机...

    简易的实现本地服务 node.js

    【标题】:“简易的实现本地服务 node.js” 在IT领域,本地服务的搭建是开发者进行Web应用开发的基础工作。Node.js作为一个基于Chrome V8引擎的JavaScript运行环境,因其非阻塞I/O和事件驱动的特性,使其在构建高效...

    使用Node+express+mongoDB搭建的简易博客系统。主要仿照黑马程序员的一个项目。.zip

    在本项目中,我们利用Node.js的Express框架和MongoDB数据库构建了一个简易的博客系统,这是一个常见的Web开发应用场景,尤其适合初学者进行实践和学习。以下是对该项目涉及的知识点的详细解析: 1. **Node.js**:...

    node简易服务端工程压缩包ServerTest.zip

    标题 "node简易服务端工程压缩包ServerTest.zip" 提供了一个关于使用Node.js和Express框架构建的简单服务器端项目的概述。这个项目旨在帮助初学者理解如何搭建基础的服务器端架构,涉及项目结构、路由设计以及数据库...

    使用Node.js+Socket.IO搭建WebSocket实时应用

    在实现该聊天室的过程中,首先需要搭建Node.js环境,并安装必要的依赖包,如`express`用于构建服务器框架,`socket.io`用于实现WebSocket服务。接下来,通过Socket.IO建立服务器端和客户端之间的连接,并定义事件...

    使用node.js+express+bootstrap+mongodb做简易的博客系统.zip

    首先,Node.js是基于Chrome V8引擎的JavaScript运行环境,它允许我们在服务器端执行JavaScript代码。Node.js拥有强大的非阻塞I/O模型,使得它可以高效地处理大量并发请求,非常适合构建实时、高并发的Web应用,如...

    node写的简单的留言板

    综上所述,这个"node写的简单的留言板"项目涉及了Node.js的基础知识,包括使用Express框架搭建服务器、处理HTTP GET请求、定义路由、使用中间件,以及可能的模板引擎和数据库操作。这些都是开发Web应用的基础,对于...

    简易版离线数仓伪分布式搭建(个人使用)

    简易版离线数仓伪分布式搭建(个人使用) 本文档旨在指导个人用户搭建一个简易版的离线数仓伪分布式系统,使用 Hadoop 作为核心组件。整个过程可以划分为两个主要步骤:环境搭建和 Hadoop 配置。 一、环境搭建 ...

Global site tag (gtag.js) - Google Analytics