node+express+socket.io+mysql=通讯服务器搭建(一)

首发github/blog 欢迎大家评论给星

安装

首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后安装express-generator应用骨架

$ mkdir node-demo
$ npm install express-generator -g //mac需要加sudo

express -h

$ express -h
  用法: express [options] [dir]
  选项:

    -h, --help          输出使用信息
    -V, --version       输出版本号
    -e, --ejs           添加ejs引擎支持(默认为jade)
        --hbs           添加handlebars引擎支持
    -H, --hogan         添加hogan.js引擎支持
    -c, --css <engine>  添加stylesheet <engine> 支持 (less|stylus|compass|sass) (默认为CSS)
        --git           添加.gitignore
    -f, --force         非空目录上的 force

express-generator 生成应用骨架

$ express node-demo

执行此命令后会有以下代码

warning: the default view engine will not be jade in future releases
warning: use `--view=jade‘ or `--help‘ for additional options

//警告:默认的视图引擎在未来版本中不会是JADE
//警告:使用“-VIEW = JADE”或“帮助”选项

//这里我们重新生成骨架默认为ejs模板 使用以下命令

//express --view=ejs blog
//--view=模板引擎的名称,有很多种
//blog为项目文件夹名称

$ express --view=ejs node-demo  使用ejs模板引擎
// 出现以下信息,安装指示 一步一步进行
   create : node-demo/
   create : node-demo/public/
   create : node-demo/public/javascripts/
   create : node-demo/public/images/
   create : node-demo/public/stylesheets/
   create : node-demo/public/stylesheets/style.css
   create : node-demo/routes/
   create : node-demo/routes/index.js
   create : node-demo/routes/users.js
   create : node-demo/views/
   create : node-demo/views/error.jade
   create : node-demo/views/index.jade
   create : node-demo/views/layout.jade
   create : node-demo/app.js
   create : node-demo/package.json
   create : node-demo/bin/
   create : node-demo/bin/www

   change directory:
     $ cd node-demo

   install dependencies:
     $ npm install

   run the app:
     $ DEBUG=node-demo:* npm start

运行express

$ npm start 

//浏览器输入 http://localhost:3000/
//即可看到

//Express
//Welcome to Express

项目文件分析

项目创建成功之后,生成四个文件夹和两个文件,

  1. app.js

    • 这是它的初始形式,这个模块还要继续导出给bin文件夹下的www文件使用
  2. 配置信息文件packetage.json
  3. bin是项目的启动文件,配置以什么方式启动项目,默认 npm start
    • www文件:这里拥有着http服务器的基本配置
  4. public是项目的静态文件,放置js css img等文件
  5. routes是项目的路由信息文件,控制地址路由
  6. views是视图文件,放置模板文件ejs或jade等(其实就相当于html形式文件啦~)
  7. express这样的MVC框架模式,是一个Web项目的基本构成。

进化项目——连接数据库

$ npm install mysql --save

根目录sql文件夹 里面新建sqlConfig.js,内容如下:

// 引入mysql

var mysql = require(‘mysql‘);
var pool = mysql.createPool({
  host: "localhost", //这是数据库的地址
  port: "2000",
  user: "root", //需要用户的名字
  password: "12345", //用户密码 ,如果你没有密码,直接双引号就是
  database: "huang" //数据库名字
});

/**
 * @param {*} sql sql语句
 * @param {*} callback 回调函数
 */
function query(sql, callback) {
  pool.getConnection(function (err, connection) {
    connection.query(sql, function (err, rows) {
      callback(err, rows);
      connection.release(); //释放链接
    });
  });
}

exports.query = query;

routes文件夹下面新建admin_user.js对应 admin_user表模块 内容如下:

var express = require(‘express‘);
var router = express.Router();

//引入数据库包
var sql = require("../sql/sqlConfig.js");
/**
 * 查询列表页
 */
router.get(‘/‘, function (req, res, next) {
  sql.query(‘select * from admin_user‘, function (err, rows) {
    if (err) {
      console.log(err)
      res.render(‘index.ejs‘, { title: ‘Express‘, datas: [] });
    } else {
      res.render(‘index.ejs‘, { title: ‘Express‘, datas: rows });
    }
  })
});

module.exports = router;

sql文件夹 继续新建 AdminUserSQL.js 内容如下:

//admin_user表 sql语句
var AdminUserSQL = {
  queryAll: ‘SELECT * FROM admin_user‘,
};

module.exports = AdminUserSQL;

进入app.js,加入一下代码:

//引入users模块
var AdminUsersRouter = require(‘./routes/admin_user‘);
app.use(‘/get-admin-users‘, AdminUsersRouter);

启动

http://localhost:3000/get-admin-users

Express
Welcome to Express

userName    姓名
admin   超级管理员

总结

node.js配合express连接mysql获取admin_user表的简单demo完成。

通讯服务器搭建第一步完成,下一步我们将配合socket.io完成消息推送。欢迎大家评论交流。

源码见github

原文地址:https://www.cnblogs.com/ychl/p/9142166.html

时间: 2024-09-30 10:17:10

node+express+socket.io+mysql=通讯服务器搭建(一)的相关文章

node+express+socket.io制作一个聊天室功能

首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js 1 var http=require("http"); 2 var express=require("express"); 3 var sio=require("socket.io"); 4 5 var app=express(); 6 app.use(express.static(__dirname+

使用Node.js+Socket.IO搭建WebSocket实时应用【转载】

原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. WebSocket简介 谈到Web实时推送,就不得不说WebSocket.在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询(Polling)和Comet技术,Comet又可细分为两种实现方

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

Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. 作者:潘良虎链接:https://www.zhihu.com/question/20215561/answer/26419995来源:知乎原文地址:http://www.plhwin.com/2014/05/28/nodejs-socketio/ WebSocket简介 谈到Web实时推送,就不得不说

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

Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. WebSocket简介 谈到Web实时推送,就不得不说WebSocket.在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询(Polling)和Comet技术,Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些方案

[转载]使用node.js+socket.io搭建实时消息系统

在开发web应用时,经常会有消息接收需求.例如后台处理完某个任务,需要告知用户等.一个简单的做法,是使用ajax轮询.这样带来的问题一是低效,二是消息触达不够实时.另一个方法是使用websocket来接收消息,但可惜IE不支持这种方式.下面推荐一种既能实时接收消息,又能兼容各种浏览器的方案,那就是node.js+socket.io. node.js的异步非阻塞模型,做消息推送非常合适.socket.io则负责屏蔽浏览器的差异,其会选择性的使用下列方式建立连接:websocket, flash s

Node.js+socket.io在线聊天室

Node.js+socket.io实现在线聊天室,照着这个教程做的,稍加改动即可实现. Node.js:0.10.31 Express:3.* 创建工程chat: 添加几个文件,工程结构如下 代码: package.json: { "name": "application-name", "version": "0.0.1", "private": true, "scripts": { &

用node.js(socket.io)实现数据实时推送

在做商品拍卖的时候,要求在商品的拍卖页面需要实时的更新当前商品的最高价格.实现的方式有很多,比如: 1.setInterval每隔n秒去异步拉取数据(缺点:更新不够实时) 2. AJAX轮询方式方式推送数据(缺点:服务端需要在死循环中反复查询数据库) 3.websocket推送数据(缺点:仅支持html5标准的浏览器) socket.io的简要介绍 所有客户端都通过socket.io挂在nodejs服务器上(注意: 只是挂着,不需要任何循环,因为它是事件驱动的):需要推送消息了,服务器就与nod

基于node.js+socket.io+html5实现的斗地主游戏(1)概述

一.游戏描述 说是斗地主游戏,其实是寝室自创的"捉双A",跟很多地方的捉红10.打红A差不多,大概规则是: 1.基础牌型和斗地主一样,但没有大小王,共52张牌,每人13张,这也是为什么题目直接叫斗地主游戏的原因了. 2.手牌有黑桃A和草花A的两个人一伙:若黑桃A和草花A都在一个人手里,那就自己一伙. 3.开牌之后可以选择亮A或者不亮A,亮A之后队友也应亮明身份,互相配合出牌. 4.随机指定最先出牌者. 5.按照手牌出完顺序记分数,分别记4.3.2.1分,最后整队加和,分数高的队伍获胜.

【原创】node+express+socket搭建一个实时推送应用

技术背景 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新. 应用场景: 监控系统:后台硬件热插拔.LED.温度.电压发生变化 即时通信系统:其它用户登录.发送信息 即时报价系统:后台数据库内容发生变化 技术实现方案:ajax long polling(ajax长轮询),comet(http长连接).socket 这里有篇文章介绍了这几种技术,可以看一下. http://www.ibm.com/developerworks/c