Skip to content

基于Node.js的快速开发工具包,包括各种服务组件和日常工具组件

Notifications You must be signed in to change notification settings

zhengjinwei123/mnode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mnode

Node.js 服务组件和各种工具包,包括各类服务组件:
express,http,websocket,tcp,udp,热加载器等。
包括各种日常工具包和算法库:
日期操作,文件处理,数据库连接池(redis,mysql,mongodb),xml文件解析,csv文件解析,xml生成sql脚本,各类协议通信客户端(tcp,udp,http,websocket,ftp),
buffer,日志处理,单例生成器等。

所有组件和工具都经过实例测试通过

服务组件

Express:封装Express web组件,实现快速创建web服务,支持原生路由规则,自动加载所有路由,支持session、cookie、静态文件请求,支持过滤器函数中间件,实现请求拦截。支持模块化,route和view分离,详细参考: ExpressPlugin

var ExpressPlugin = require("../app");
var Path = require("path");

var d = new ExpressPlugin('localhost', 9095, Path.join(__dirname, "../../../../expressTest"));
d.start(function () {
    console.log("ready");
});
d.on('uncaughtException', function (err) {
   console.error('Got uncaughtException', err.stack, err);
   if (d.env() == 'development') {
       process.exit(1);
    }
});

Http:原生node模块创建http服务,支持https,支持过滤器函数,支持session,按请求方法将路由模块化,只支持get和post方法.详细参考: httpPlugin

var HttpServer = require("../plugin/app").HttpServer;
var httpS = new HttpServer(9090, "127.0.0.1", {
        filtersFunc: [
            function (message) {
                return true;
            }
        ]
    }, Path.join(__dirname, "../../httpServerTest"));

    httpS.createServer();

    httpS.on("ready", function (data) {
        logger.info("Http", data);
    });
    httpS.on("error", function (data) {
        logger.info("Http", data);
    });
    httpS.on("connect-connect", function (data) {
        logger.info("Http", data);
    });
    httpS.on("connect-error", function (error) {
        logger.info("Http", error);
    });
    httpS.on("connect-disconnect", function (data) {
        logger.info("Http", data);
    });
    httpS.on("connect-response", function (data) {
        logger.info("Http", data);
    });
    httpS.on("connect-errorcode", function (code) {
        logger.info("Http", code);
    });

JadeLoader:热加载器服务,利用单例模式实现内容缓存存储器,外部提供set和get方法用于设置缓存,自动检测指定运行目录下的jadeContext.json文件中所指定的托管环境,加载配置中的缓存,有效减少require次数,做到清晰明了。内部有定时器按指定时间重新加载模块缓存(用户自定义缓存不重新加载 详情参考:JadeLoader

var Path = require('path');
var JadeLoader = require("../plugin/app").JadeLoader;
JadeLoader.init(Path.join(__dirname, "../"), true, 60, function () {
    //此处加载您的代码
});
JadeLoader.on("error", function (err) {
    console.error(err);
});
JadeLoader.on("hotLoad", function (resp) {
    console.log(resp);
});

Websocket:快速搭建websocket 服务,详情参考:websocket

var Singleton = require("../utils/app").Singleton;
var wss = Singleton.getDemon(WSocketServer, "127.0.0.1", 9091);
    wss.on("message", function (msg) {
        console.log("ws:", msg);
    });
    wss.on("connection", function (socket, param) {
        socket.send("连接成功");
        console.log("连接成功", param.host)
    });

    wss.on('close', function (param) {
        console.log("客户端断开连接", param.host);
    });

    wss.once("listening", function () {
        console.log("listening");
    });
    wss.on("error", function (err) {
        console.error(err);
    });

UDP 和 Tcp 服务,详情参考:UDP -TCP

/**
     * 测试 udpserver
     * @type {exports.UdpServer|*}
     */
    var UdpServer = require("../plugin/app").UdpServer;
    var d = new UdpServer();
    d.on('listening', function (address) {
        console.log("server listening " + address.address + ":" + address.port);
    });
    d.on('message', function (msg, rinfo) {
        console.log('Received %d bytes msg:%s from %s:%d\n', msg.length, msg, rinfo.address, rinfo.port);
    });
    d.on('error', function (error) {
        console.error(error.stack);
    });

    setInterval(function () {
        console.log("--------start send data by udp protocal----------------");
        var UdpClient = require("../utils/app").UdpClient;
        var messgae = new UdpClient("127.0.0.1", 9092);

        //messgae.push_string("zhengjinwei", 20);
        //messgae.push_string("male", 10);
        //messgae.push_string("my name is zhengjinwei", 100);
        //messgae.push_int32(212121212);

        messgae.send("zhengjinwei");
    }, 1000);

utils 工具包

内部包括各种日常编码工具,协助快速开发,避免重复造轮子

utils

  • buffer-utils buffer处理包
  • csv-utils csv转json
  • db-mongodb mongodb 模块化客户端,经过实际项目验证
  • db-mysql mysql客户端,经过实际项目验证
  • db_redis redis客户端
  • encrypt-utils 加密包
  • exception 异常处理
  • file-utils 文件处理
  • ftp-utils ftp上传下载
  • httpclient-utils http客户端
  • ip-utils ip地址校验
  • logger 日志处理
  • logger-utils 基于pomelo-logger的日志处理
  • obj-utils 对象方法
  • queue-utils 队列
  • Singleton-utils 单例生成器
  • stack-utils 堆栈
  • tcp-utils tcp客户端
  • udp-utils udp客户端
  • time-utils 时间处理
  • websocket-client-utils ws客户端
  • xml-parser xml解析

About

基于Node.js的快速开发工具包,包括各种服务组件和日常工具组件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages