From 373c69799c78d97027e824eff9953edcb5bd068b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B0=E5=B9=BF=E9=93=B6?= <273650669@qq.com> Date: Tue, 31 Oct 2017 14:06:45 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BF=9D=E5=AD=98=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=EF=BC=8C=E5=8A=A0=E8=BD=BD=E8=8E=B7=E5=8F=96=E6=9C=80=E8=BF=91?= =?UTF-8?q?=E5=8D=81=E6=9D=A1=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 2 ++ io/io.js | 6 +++++ model/message.js | 40 +++++++++++++++++++++++++++++++ model/users.js | 47 ++++++++++++++++++++++++++++++++++++ package.json | 3 ++- public/js/client/client.js | 41 ++++++++++++++++++++++++------- public/js/server/index.js | 49 +++++++++++++++++++++++++++++--------- routes/message.js | 23 ++++++++++++++++++ utils/mongoose.js | 26 ++++++++++++++++++++ 9 files changed, 217 insertions(+), 20 deletions(-) create mode 100644 model/message.js create mode 100644 model/users.js create mode 100644 routes/message.js create mode 100644 utils/mongoose.js diff --git a/app.js b/app.js index b2a5037..18a08c0 100644 --- a/app.js +++ b/app.js @@ -7,6 +7,7 @@ var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); +var message = require('./routes/message'); var app = express(); @@ -24,6 +25,7 @@ app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/users', users); +app.use('/message', message); // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/io/io.js b/io/io.js index 9f2b2e7..3d6a9c2 100644 --- a/io/io.js +++ b/io/io.js @@ -8,6 +8,7 @@ var msgType = require('./messageTpye'); var ioSvc = require('./ioHelper').ioSvc; var AppConfig = require('../config'); var Common = require('../utils/common'); +var msgModel = require('../model/message'); //服务端连接 function ioServer(io) { @@ -192,6 +193,11 @@ function ioServer(io) { //监听客户端发送的信息,实现消息转发到各个其他客户端 socket.on('message',function(msg){ + msgModel.add(msg.from_uid,msg.uid,msg.content,function (err) { + if(err){ + console.error(err); + } + }); if(msg.type == msgType.messageType.public){ var mg = { "uid" : msg.from_uid , diff --git a/model/message.js b/model/message.js new file mode 100644 index 0000000..3f99fc0 --- /dev/null +++ b/model/message.js @@ -0,0 +1,40 @@ +var mongoose = require('../utils/mongoose').mongoose; + +var Schema = mongoose.Schema; + +var MessageSchema = new Schema({ + from_uid : { type:String ,index: true}, + to_uid : { type:String ,index: true}, + content : { type:String }, + time : { type:Date, default:Date.now } +}); + +var MessageModel = mongoose.model("message", MessageSchema); + +function add(from_uid,to_uid,content,callback) { + var info = { + "from_uid" : from_uid, + "to_uid" : to_uid, + "content" : content + }; + var msgModel = new MessageModel(info); + msgModel.save(function(err, res){ + return callback(err,res); + }); +} + +function query(page,size,uid,callback) { + var query = MessageModel.find({}); + var condition = []; + if(uid){ + condition.push({"from_uid":uid}); + condition.push({"to_uid":uid}); + } + + var skip = (page - 1) * size; + query.or(condition).skip(skip).limit(size).sort({"time":-1}).exec(callback); +} + + +exports.add = add; +exports.query = query; \ No newline at end of file diff --git a/model/users.js b/model/users.js new file mode 100644 index 0000000..bbd45e3 --- /dev/null +++ b/model/users.js @@ -0,0 +1,47 @@ +var mongoose = require('../mongoose').mongoose; +var crypto = require('crypto'); + +var Schema = mongoose.Schema; + +var UsersSchema = new Schema({ + username : { type:String }, + password : { type:String }, + time : { type:Date, default:Date.now } +}); + +var UsersModel = mongoose.model("users", UsersSchema); + +function login(username,password,callback) { + var md5 = crypto.createHash('md5'); + password = md5.update(password).digest('hex'); + var condition = {'username' : username,'password':password}; + + UsersModel.findOne(condition, function(err, res){ + var _err = null; + if (err) { + _err = err; + } + if(!res){ + _err = '用户名密码不正确'; + } + return callback(_err,res); + }) +} + +function reset_psw(username,psw_old,psw_new,callback) { + psw_old = crypto.createHash('md5').update(psw_old).digest('hex'); + UsersModel.find({username:username,password:psw_old},function (err,info) { + if (err) { + return callback(err,null); + } + + if(!info || info.length == 0){ + return callback('原密码不正确',null); + } + psw_new = crypto.createHash('md5').update(psw_new).digest('hex'); + UsersModel.findOneAndUpdate({username:username,password:psw_old}, {password:psw_new}, callback); + }); +} + +exports.login = login; +exports.reset_psw = reset_psw; \ No newline at end of file diff --git a/package.json b/package.json index 5c88f7e..66d62d6 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "serve-favicon": "~2.4.2", "socket.io":"~2.0.4", "socket.io-client":"^2.0.4", - "redis":"^2.8.0" + "redis":"^2.8.0", + "mongoose":"^4.12.5" } } diff --git a/public/js/client/client.js b/public/js/client/client.js index dafb2c1..0242cda 100644 --- a/public/js/client/client.js +++ b/public/js/client/client.js @@ -1,9 +1,15 @@ $(function(){ //Socket.IO 连接 - var socket = io.connect('http://'+document.domain+':9010'); + var socket = io.connect('http://'+document.domain+':9010',{ + "transports":['websocket', 'polling'] + }); var uuid = ''; - function insert_client_html(time,content){ + function insert_client_html(content,datetime){ + var time = dateFormat(); + if(datetime){ + time = dateFormat("yyyy-MM-dd hh:mm:ss",new Date(datetime)); + } var tpl = '