-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsocket.msg.js
152 lines (136 loc) · 3.98 KB
/
socket.msg.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
var sio = require('socket.io');
// var mongodb = require('./db/mongodb');
// var mongoose = require('./db/mongoose'),
// Schema = mongoose.Schema;
var User = require('./db/model/User');
var Message = require('./db/model/Message')
var IO = function(server) {
var io = sio.listen(server)
var users = {},
usocket = {};
var counter = 0;
var home = {};
// var xss = require('xss');
/**
* socketIO 内置事件
* http://cnodejs.org/topic/53911fd9c3ee0b5820f0b9ef
*
* */
io.on('connection', function(socket) {
console.log('a user connected.'+socket.id);
var username = "";
//发送消息事件
socket.on('chat message', function(data) {
sendmsg(data);
// insertMessage(data);
});
//用户进入事件
socket.on('user join', function(data) {
counter++;
users[username] = data.user;
usocket[username] = socket;
var commonData = {};
commonData.type = 1;
commonData.msg = "我们提倡绿色直播,严禁涉政、涉恐、涉群体性事件、涉黄等直播";
usocket[username].emit('to ' + data.user, commonData);
console.log('join:' + data.user);
data.type = 1;
data.users = users;
data.counter = counter;
data.msg = "欢迎 " + data.user + " 进入聊天室";
sendmsg(data);
// insertUser();
});
//断开连接事件
socket.on('disconnect', function() {
console.log('disconnect2')
if (username) {
counter--;
delete users[username];
delete usocket[username];
sendmsg({
type: 1,
msg: "用户<b>" + username + "</b>离开聊天室",
counter: counter,
users: users
})
}
});
});
// function homeLeave(uname) {
// if (home.name && home.name == uname) {
// home = {};
// io.emit('home leave', uname);
// }
// }
// //插入数据库
// function insertData(data) {
// var conn = db.connect();
// var post = {
// msg: data.msg,
// uname: data.user,
// time: data.time.toString(),
// to: data.to
// };
// var query = conn.query('insert into chatmsg set ?', post, function(err, result) {
// console.log(err);
// console.log(result)
// })
// console.log(query.sql);
// conn.end();
// }
function sendmsg(data) {
io.emit('chat message', data);
}
function sendUserMsg(data) {
if (data.to in usocket) {
console.log('================')
console.log('to' + data.to, data);
usocket[data.to].emit('to' + data.to, data);
usocket[data.user].emit('to' + data.user, data);
console.log('================')
}
}
/**
* mongodb 操作
*/
// function insertInfo() {
// mongodb.insert();
// }
/**
* mongoose 操作mongodb
*/
function insertUser() {
var user = new User({
username : 'helloworld',
userpwd: 'abcd',
userage: 37,
logindate: new Date()
});
user.save(function (err,res) {
if(err){
console.log('Error:'+err);
}else{
console.log('res:'+res);
}
})
}
/**
* 插入message
*/
function insertMessage(data) {
var message = new Message({
msg:data.msg,
to : data.to,
user : data.user
})
message.save(function (err,res) {
if(err){
console.log('Error:'+err);
}else{
console.log('res:'+res);
}
})
}
}
module.exports = IO;