/
chat.js
71 lines (55 loc) · 1.77 KB
/
chat.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
/**
* Created by yaoyaolin on 4/27/16.
*/
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
//app.get('/', function(req, res){
// res.sendfile('index.html');
//});
var connectionList ={};
var chatRooms = {};
io.sockets.on('connection',function(socket){
var socketId = socket.id;
connectionList[socketId]= {
socket: socket
}
socket.on('join',function(data){
console.log("one user join " + data.username);
socket.username = data.username;
socket.roomUrl = data.roomUrl;
if (!chatRooms[data.roomUrl]){
chatRooms[data.roomUrl] = {};
}
chatRooms[data.roomUrl][socketId] = socket;
for ( var sId in chatRooms[data.roomUrl]){
chatRooms[data.roomUrl][sId].emit('broadcast_join', {
username : chatRooms[data.roomUrl][sId].username
});
}
});
socket.on('disconnect',function() {
console.log("one user quit");
for (var sId in chatRooms[socket.roomUrl]) {
chatRooms[socket.roomUrl][sId].emit('broadcast_quit', {
username: chatRooms[socket.roomUrl][sId].username
});
}
if (chatRooms[socket.roomUrl]) {
delete chatRooms[socket.roomUrl][socket.id];
}
});
socket.on('say',function(data){
console.log("one user say " + data.roomUrl );
for ( var sId in chatRooms[data.roomUrl]){
console.log(sId + " is saying " + data.text);
chatRooms[data.roomUrl][sId].emit('broadcast_say', {
username : data.username,
text: data.text
});
}
});
});
server.listen(8110, function(){
console.log('linstening on 8110');
});