express3/4引入socket.io
app.js
var express = require('express');
var path = require('path');
var session = require('express-session')
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var ejs = require('ejs');
var index = require('./routes/index');
var userindex = require('./controler/index');
var debug = require('debug')('exp:server');
var port = normalizePort(process.env.PORT || '4000');
var app = express();
app.set('port', port); var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:8080');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Credentials', 'true');
next();
};
app.use(allowCrossDomain);
// view engine setup
app.engine('html', ejs.__express);
// view engine setup
app.set('views', path.join(__dirname, 'public'));
app.set('view engine', 'html'); app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// session 中间件
app.use(session({
name: "mumu", // 设置 cookie 中保存 session id 的字段名称
secret: "mumu", // 通过设置 secret 来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改
resave: false, // 强制更新 session
saveUninitialized: false, // 设置为 false,强制创建一个 session,即使用户未登录
cookie: {
maxAge: 2592000000 // 过期时间,过期后 cookie 中的 session id 自动删除
}
}))
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function (socket) {
console.log("链接成功")
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
app.io=io;
index(app);
userindex(app); // catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
res.render('404');
}); // error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page
res.status(err.status || 500);
res.render('500');
}); server.listen(port);
server.on('error', onError);
server.on('listening', onListening); function normalizePort(val) {
var port = parseInt(val, 10); if(isNaN(port)) {
// named pipe
return val;
} if(port >= 0) {
// port number
return port;
} return false;
} /**
* Event listener for HTTP server "error" event.
*/ function onError(error) {
if(error.syscall !== 'listen') {
throw error;
} var bind = typeof port === 'string' ?
'Pipe ' + port :
'Port ' + port; // handle specific listen errors with friendly messages
switch(error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
} /**
* Event listener for HTTP server "listening" event.
*/ function onListening() {
var addr = server.address();
var bind = typeof addr === 'string' ?
'pipe ' + addr :
'port ' + addr.port;
debug('Listening on ' + bind);
}
routes/index
app.use('/reg', require('./base/reg')(app.io));
reg.js
const express = require('express')
const router = express.Router()
const regcheck = require('../../sql/reg')
// GET /login 登录页
let reg = function(io) {
router.post('/', function(req, res, next) {
io.emit("reg",{"name":"成功"})
try {
regcheck.checktel(req).then(function(d) {
return regcheck.checknickname(req);
}).then(function(d) {
return regcheck.reg(req)
}).then(function(d) {
res.send(d)
}).catch(function(d) {
res.send(d)
});
} catch(e) {
console.log(e)
}
})
return router;
}
module.exports = reg
express3/4引入socket.io的更多相关文章
- Node学习笔记(三):基于socket.io web版你画我猜(二)
上一篇基础实现的功能是客户端canvas作图,导出dataURL从而实现图片信息推送,下面具体讲下服务端的配置及客户端的配置同步 首先先画一个流程图,讲下大概思路 <canvas id=&quo ...
- Socket.IO聊天室~简单实用
小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ ...
- 利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
我比较喜欢听音乐,特别是周末的时候,电脑开着百度随心听fm,随机播放歌曲,躺在床上享受.但碰到了一个烦人的事情,想切掉不喜欢的曲子,还得起床去操作电脑换歌.于是思考能不能用手机控制电脑切换歌曲,经过一 ...
- 长连接 Socket.IO
概念 说到长连接,对应的就是短连接了.下面先说明一下长连接和短连接的区别: 短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束( ...
- 使用 Socket.IO 开发聊天室
前言 Socket.IO 是一个用来实现实时双向通信的框架,其本质是基于 WebSocket 技术. 我们首先来聊聊 WebSocket 技术,先设想这么一个场景: · 用户小A,打开了某个网站的充值 ...
- socket.io 入门篇(三)
本文原文地址:https://www.limitcode.com/detail/5926e3a056fba70278bf2044.html 前言 上篇我们介绍了 socket.io 中room的概念和 ...
- socket.io 入门篇(二)
本文原文地址:https://www.limitcode.com/detail/5922f1ccb1d4fe074099d9cd.html 前言 上篇我们介绍了 socket.io 基本使用方法,本篇 ...
- socket.io 入门篇(一)
本文原文地址:https://www.limitcode.com/detail/591b114bb1d4fe074099d9c9.html 前言 本篇介绍使用node.js模块组件socket.io实 ...
- node基于express的socket.io
前一段事件,我一个同学给他们公司用融云搭建了一套web及时通信系统,然后之前我的公司也用过环云来实现web及时通信,本人对web及时通信还是非常感兴趣的.私下读了融云和环信的开发文档,然后发现如果注册 ...
随机推荐
- HBase Filter及对应Shell
比较运算符 CompareFilter.CompareOp比较运算符用于定义比较关系,可以有以下几类值供选择: EQUAL 相等 GREATER 大于 GREATER_OR_EQUAL 大于等于 LE ...
- 在Heroku上免费部署ASP.NET Core(使用Docker和CircleCI)
创建 ASP.NET Core应用 使用命令行即可创建一个模板项目 dotnet new webapi 完整代码 https://github.com/Ibro/AspNetCoreHerokuDoc ...
- abap 常用 function
ABAP常用函数总结 alv .smartform. excel .text.邮件 .远程访问,FTP服务器... **********常用功能function REUSE_ALV_GRID_DI ...
- 初学者易上手的SSH-hibernate04 一对一 一对多 多对多
这章我们就来学习下hibernate的关系关联,即一对一(one-to-one),一对多(one-to-many),多对多(many-to-many).这章也将是hibernate的最后一章了,用于初 ...
- Android 简单记事本
写在前面 课程作业需要,于是忙活好几天抄了一个简单的记事本,使用已学内容包括Android UI布局,Activity的跳转,SQLite数据库. 开发环境:Android Studio 参考:htt ...
- iOS坐标转换失败?
使用UIKit的坐标转换方法convertxxx,千万要注意: 一个控件可以转换子控件上的某个点,到另外一个控件上 但是不能转换自己本身的点,到另外一个控件上,否则会数量加倍 所以,一个控件若想转换本 ...
- 基于apache的虚拟主机
apche支持3种类型虚拟主机: 基于IP的虚拟主机 基于端口的虚拟主机 基于主机名的虚拟主机 配置两个站点虚拟主机: /data/web1 /data/web2 一.基于IP虚拟主机 添加一个IP: ...
- sql字符串根据日期产生日期+自增长标志
select Convert(varchar(6), '20180614 20:19:04', 12) + SubString('0000' + Convert(varchar(6), 1 + 1), ...
- leetcode-979-树
https://leetcode.com/problems/distribute-coins-in-binary-tree/ n个硬币随机分布在n个点上,要求每个点都拥有一个硬币,问最小的花费. 对每 ...
- [luogu P2633] Count on a tree
[luogu P2633] Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点 ...