用nodejs搭建一个简单的服务监听程序

作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还是记录一下方便以后复习!

今天主要记录一下,很久以前用nodejs制作一个简单的服务监听程序的一些过程!

大家都知道,通过nodejs可以对前台请求进行监听,这里就放一个官网的hello world例子吧:

var http = require(‘http‘);

http.createServer(function (req, res) {
  res.writeHead(200, {‘Content-Type‘: ‘text/plain‘});
  res.end(‘Hello World\n‘);
}).listen(1337, ‘127.0.0.1‘);

console.log(‘Server running at http://127.0.0.1:1337/‘);

以上代码相信了解过node的童鞋应该都会比较熟悉!

那么node既然可以监听请求,那么是不是就可以根据前台的不同请求返回不同的文件或内容?这不就是一个简单的服务器了么!抱着这样的想法,简单实验了一下,我们都知道,服务器可以根据请求的文件不同,会使用相应mine类型的!比如../index.css使用的mine类型就是text/css!那么,我们是不是应该有个常用mine类型的一个简单配置?这里,做了个简单的mine配置文件mine.js,用json来存放一下常用的格式:

exports.types = {
  "css": "text/css",
  "gif": "image/gif",
  "html": "text/html",
  "ico": "image/x-icon",
  "jpeg": "image/jpeg",
  "jpg": "image/jpeg",
  "js": "text/javascript",
  "json": "application/json",
  "pdf": "application/pdf",
  "png": "image/png",
  "svg": "image/svg+xml",
  "swf": "application/x-shockwave-flash",
  "tiff": "image/tiff",
  "txt": "text/plain",
  "wav": "audio/x-wav",
  "wma": "audio/x-ms-wma",
  "wmv": "video/x-ms-wmv",
  "xml": "text/xml"
};

当然,除了这些以外还有很多其他格式,这里就不一一举例了!

好了,有了mine格式对应的文件配置文件,接下来就简单了,首先得根据官网例子搭建一个监听程序,然后在监听程序中添加一下简单的www.baidu.com/这个样的链接默认打开文件的处理,以及相对链接的补全等!当然还得做一下简单的错误处理,如404,500等!具体看代码:

/*
 *搭建http服务器,监听http请求
 */
var http = require("http"),
fs = require(‘fs‘),
path = require(‘path‘),
mine = require(‘./mine‘).types;
url = require(‘url‘);
//定义简单的工具
//获取当前时间
var date = function(ms) {
    var date = ms ? new Date(ms) : new Date(),
    mon = date.getMonth() >= 10 + 1 ? ‘-‘ : ‘-0‘,
    d = date.getDate() >= 10 ? ‘-‘ : ‘-0‘,
    hour = date.getHours() >= 10 ? ‘ ‘ : ‘ 0‘,
    min = date.getMinutes() >= 10 ? ‘:‘ : ‘:0‘,
    sec = date.getSeconds() >= 10 ? ‘:‘ : ‘:0‘;
    return date.getFullYear() + mon + (date.getMonth() + 1) + d + date.getDate() + hour + date.getHours() + min + date.getMinutes() + sec + date.getSeconds();
},
//定义输出log日志方法,带上时间,方便调试
DebugLog = function(mes) {
    var now = date();
    console.log(now + " " + mes);
};
//服务监听
exports.server = function() {
    http.createServer(function(req, res) {
    	var pathname = url.parse(req.url).pathname,//获取url中的文件名
    	pathname = (pathname !== "/" && pathname) ? pathname : "/index.html";//处理链接以‘/‘结尾的情况
        var realPath = path.join("../", path.normalize(pathname.replace(/\.\./g, ""))),//将链接转换成物理路径
        ext = path.extname(realPath);
        ext = ext ? ext.slice(1) : ‘unknown‘;//获取文件扩展名
        //查找文件
        fs.exists(realPath, function (exists) {
            if (!exists) {//处理404
                res.writeHead(404, {
                    ‘Content-Type‘: ‘text/plain‘
                });

                res.write("This request URL " + pathname + " was not found on this server.");
                res.end();
            } else {//读取文件
                fs.readFile(realPath, "binary", function (err, file) {
                    if (err) {//程序出错报500错误
                        res.writeHead(500, {
                            ‘Content-Type‘: ‘text/plain‘
                        });
                        res.end(err);
                    } else {//正常返回文件
                        var contentType = mine[ext] || "text/plain";//根据mine.js中的配置设置对应的contentType
                        res.writeHead(200, {
                            ‘Content-Type‘: contentType
                        });
                        res.write(file, "binary");
                        res.end();
                    }
                });
            }
        });
    }).listen(8888, ‘localhost‘);
    tool.DebugLog("http服务启动,开始监听127.0.0.1:8888的http请求!");
}

ok,代码到这里基本就结束了,当然这只是最简单的功能,大家可以自己去丰富!本文就到这里吧,欢迎大家交流讨论!

时间: 2024-10-26 02:48:33

用nodejs搭建一个简单的服务监听程序的相关文章

用nodejs搭建一个简单的服务器

使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安装成功 [常用命令] 切换盘符 d:进入文件夹 cd nodejs返回上一级目录 cd..清屏 cls展示目录 dir复制文件名 选中右键--复制历史操作 上箭头 执行文件 node 文件名(在文件文件夹目录中)停止命令行 ctrl+c nodejs可以使用的ECMAScript.读写文件.数据库操

使用 Nodejs 搭建一个简单的Web服务器

使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容 3.显示图片资源 4.自动下载以.apk/.

如何使用nodejs搭建一个简单的https服务器

为什么要使用HTTPS服务 个人隐私以及安全的原因 https是未来的趋势 HTTPS的组成 HTTPS = HTTP + TLS/SSL 简单来说在http上套上了一层加密的ssl层 HTTPS的基本原理 Nodejs搭建HTTPS服务 生成HTTPS证书 引入HTTPS模块 指定证书位置,并创建https服务 实战案例 去网上去申请https的证书 vim https_server.js "use strict" // 引入模块 var https = require("

使用http-server (nodeJs)期一个简单的服务

1.首先建一个空文件夹 2.直接在该目录下,全局安装http-server 3.在新建的文件夹中放你前端打包好的项目文件夹. 4.然后在输入hs ./pub 5.此时服务启动,可以在同一局域网访问项目.http://172.16.17.225:8080/index.html  注:http-server   不定义路径 默认文件夹是 public. 据说会默认执行我们文件目录下的index.html文件,但是博主没能测试成功(是直接端口后手动  /index.html). 6. 下面是githu

在阿里云上搭建一个简单的node服务器

一.阿里云服务器以及node环境的搭建 服务器可以去阿里云官网购买一个ECS云服务器,价格还是有点小贵的,如果想使用免费的阿里云服务器,那么阿里云官网每天也是有抢免费的服务器的,每天上午十点,新人能抢到为期半年的服务器. 然后有了服务器以后,首先搭建一个node的运行环境,保证node 能正常使用,这个不是本文的内容就不多加赘述了. 如果没有搭建的小伙伴可以参考这里. 二.远程服务器上的代码管理 在阿里云服务器上可以安装一个 git 版本控制器,将自己的代码放置在自己的 GitHub 上,然后在

搭建一个简单的DHCP服务器

实验环境: 系统:RHEL6.4 一.给DHCP服务器配置固定IP [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=....... TYPE=Ethernet UUID=...... ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.50.253 NETMASK=255.255.255.0 [[em

学生成绩管理后台第二项任务:初步建模,搭建一个简单的网站

负责人:程琳茹 合伙人:李玉婷 签约员工:闫玉荣 前言:学生成绩管理后台,看起来是一个简单的项目,但是对于我们今后的发展很重要,建设一个管理后台有很多方法,这里我们主要使用Rstudio,在之后的文章中,会详细给出我们小组完成项目的过程与遇到的问题,欢迎大家借鉴,此外,同学们要积极参与讨论. 项目步骤:1.熟悉与安装Rstudio,并且配置好R内部环境. 2.建立好文件所存放的位置与确保文档可以正常使用. 3.搭建一个简单的网站,分别分为server.R端口与ui.R端口. 4.搭建好网站后,插

node搭建一个简单的服务器

搭建一个简单的服务器 1 引入http模块 两个参数 req: request 请求 res: responese 响应 module require('mod1') node_modules 文件 require('./mode1') 发布自己的模块 去 npmjs.com 去注册一个账户 在控制台中 npm login username password email npm init npm publish cnpm install express const express = requi

使用idea搭建一个简单的SSM框架:(3)配置spring+mybatis

在此之前请先查看: 使用idea搭建一个简单的SSM框架:(1)使用idea创建maven项目 使用idea搭建一个简单的SSM框架:(2)配置springMVC 1 配置spring和mybatis整合文件 spring和mybatis整合分为三个步骤:(1)配置数据库,(2)配置SqlSessionFactoryBean (来自mybatis-spring),(3)配置MapperScannerConfigurer,该配置就我们通过接口定义的方法,就是mybatis的xml对应的namesp