Skip to content

Commit

Permalink
😄 增加图片以及多人聊天室
Browse files Browse the repository at this point in the history
😄 增加图片以及多人聊天室
  • Loading branch information
hua1995116 committed Jun 14, 2017
1 parent 08ff845 commit 2b045d4
Show file tree
Hide file tree
Showing 14 changed files with 626 additions and 371 deletions.
56 changes: 35 additions & 21 deletions build/dev-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,41 +125,55 @@ var server = app.listen(port)
// var http = require('http').Server(app);
var io = require('socket.io')(server);
var Message = require('../models/message')
var users = {}
global.users = {}

io.on('connection', function (socket) {
//监听用户发布聊天内容
socket.on('message', function (obj) {
//向所有客户端广播发布的消息
console.log(obj)
io.emit('message', obj)
var mess = {
username: obj.username,
src:obj.src,
msg: obj.msg,
roomid:'room1'
img: obj.img,
roomid: obj.room
}
io.to(mess.roomid).emit('message', mess)
console.log(obj.username + '对房' + mess.roomid+'说:'+ mess.msg)
if (obj.img === '') {
var message = new Message(mess)
message.save(function (err, mess) {
if (err) {
console.log(err)
}
console.log(mess)
})
}
var message = new Message(mess)
message.save(function (err, mess) {
if (err) {
console.log(err)
}
console.log(mess)
})
console.log(obj.username + '说:' + obj.msg)
})
socket.on('login',function (obj) {
socket.name = obj.name;
users[obj.name] = obj
io.emit('login', users)
socket.name = obj.name
socket.room = obj.roomid
if (!global.users[obj.roomid]) {
global.users[obj.roomid] = {}
}
global.users[obj.roomid][obj.name] = obj
socket.join(obj.roomid)
io.to(obj.roomid).emit('login', global.users[obj.roomid])
console.log(obj.name + '加入了' + obj.roomid)
})
socket.on('logout',function (name) {
delete users[name]
io.emit('logout', users)
socket.on('logout',function (obj) {
delete global.users[obj.roomid][obj.name]
console.log(obj.name + '退出了' + obj.roomid)
io.to(obj.roomid).emit('logout', global.users[obj.roomid])
})

socket.on('disconnect', function () {
delete users[socket.name]
//用户监听用退出聊天室
io.emit('logout', users)
if (global.users[socket.room]) {
delete global.users[socket.room][socket.name]
// 用户监听用退出聊天室
console.log(socket.name + '退出了' + socket.room)
io.to(socket.room).emit('logout', global.users[socket.room])
}
})
})

Expand Down
210 changes: 138 additions & 72 deletions config/routes.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
var User = require('../models/user')
var Message = require('../models/message')
var superagent = require('superagent')
var fs = require('fs')
var multiparty = require('multiparty');
var util = require('util')
module.exports = function (app) {
app.use(function (req, res, next) {
var _user = req.session.user
Expand All @@ -9,6 +12,65 @@ module.exports = function (app) {

next()
})
app.post('/file/uploadimg', function (req, res, next) {
// console.log(util.inspect(req.body, { showHidden: true, depth: null }))
// console.log(util.inspect(req.header, { showHidden: true, depth: null }))
// //生成multiparty对象,并配置上传目标路径
var form = new multiparty.Form()
// //设置编辑
form.encoding = 'utf-8'
// //设置文件存储路径
form.uploadDir = "./static/files/"
// //设置单文件大小限制
form.maxFilesSize = 2 * 1024 * 1024
// form.maxFields = 1000; 设置所以文件的大小总和
// 上传完成后处理
form.parse(req, function (err, fields, files) {
console.log(fields)
var filesTmp = JSON.stringify(files, null, 2)
console.log(filesTmp)
if (err) {
console.log('parse error: ' + err)
res.json({
errno: 1
})
} else {
var inputFile = files.file[0];
var uploadedPath = inputFile.path
var array = inputFile.originalFilename.split('.')
var imgtype = array[array.length - 1]
var dstPath = './static/files/' + new Date().getTime() + '.' + imgtype
//重命名为真实文件名
fs.rename(uploadedPath, dstPath, function (err) {
if (err) {
console.log('rename error: ' + err)
res.json({
errno: 1
})
} else {
var mess = {
username: fields.username,
src: fields.src,
img: dstPath,
roomid: fields.roomid
}
var message = new Message(mess)
message.save(function (err, mess) {
if (err) {
console.log(err)
}
console.log(mess)
})
console.log('rename ok')
res.json({
errno: 0
})
}
})
}
})

})
// 注册
app.post('/user/signup', function (req, res) {
var _user = req.body
Expand Down Expand Up @@ -36,84 +98,88 @@ module.exports = function (app) {
}
})
}),
// 登录
app.post('/user/signin', function (req, res) {
console.log(req.body)
var _user = req.body
var name = _user.name
var password = _user.password
console.log(password)
User.findOne({name: name}, function (err, user) {
if (err) {
console.log(err);
}
console.log(user)
if (!user) {
res.json({
errno: 1,
data: '用户不存在'
})
} else{
if (!!password) {
user.comparePassword(password, function (err, isMatch) {
if (err) {
console.log(err);
}
if (isMatch) {
req.session.user = user;
console.log('success');
res.json({
errno: 0,
data: '登录成功',
name: name,
src: user.src
})
} else {
res.json({
errno: 1,
data: '密码不正确'
})
console.log('password is not meached');
}
})
} else {
// 登录
app.post('/user/signin', function (req, res) {
console.log(req.body)
var _user = req.body
var name = _user.name
var password = _user.password
console.log(password)
User.findOne({name: name}, function (err, user) {
if (err) {
console.log(err);
}
console.log(user)
if (!user) {
res.json({
errno: 1,
data: '登录失败'
data: '用户不存在'
})
} else {
if (!!password) {
user.comparePassword(password, function (err, isMatch) {
if (err) {
console.log(err);
}
if (isMatch) {
req.session.user = user;
console.log('success');
res.json({
errno: 0,
data: '登录成功',
name: name,
src: user.src
})
} else {
res.json({
errno: 1,
data: '密码不正确'
})
console.log('password is not meached');
}
})
} else {
res.json({
errno: 1,
data: '登录失败'
})
}
}
}

})
}),
// 信息
app.get('/message',function (req, res) {
Message.find({}, function (err, message) {
if(err) {
console.log(err)
} else{
res.json({
errno: 0,
data: message
})
}
})
}),
// 机器人消息
app.get('/robotapi',function (req, res) {
var response = res
var info = req.query.info
var userid = req.query.id
var key = 'fde7f8d0b3c9471cbf787ea0fb0ca043'
superagent.post('http://www.tuling123.com/openapi/api')
.send({info, userid, key})
.end((err, res) => {
if(err){
})
}),

// 信息
app.get('/message', function (req, res) {
var id = req.query.roomid
// console.log(id)
Message.find({roomid: id}, function (err, message) {
if (err) {
console.log(err)
} else {
// console.log(message)
res.json({
errno: 0,
data: message
})
}
response.json({
data: res.text
})
})
})
}),
// 机器人消息
app.get('/robotapi', function (req, res) {
var response = res
var info = req.query.info
var userid = req.query.id
var key = 'fde7f8d0b3c9471cbf787ea0fb0ca043'
superagent.post('http://www.tuling123.com/openapi/api')
.send({info, userid, key})
.end((err, res) => {
if (err) {
console.log(err)
}
response.json({
data: res.text
})
})
})
}
Loading

0 comments on commit 2b045d4

Please sign in to comment.