Files
meanTorrent/modules/chat/server/sockets/chat.server.socket.config.js

86 lines
2.4 KiB
JavaScript
Raw Normal View History

2014-11-10 23:12:33 +02:00
'use strict';
// Create the chat configuration
module.exports = function (io, socket) {
// Emit the status event when a new socket client is connected
2017-05-10 17:52:56 +08:00
io.emit('join', {
2017-05-11 11:26:36 +08:00
type: 'status',
created: Date.now(),
user: socket.request.user
});
2014-11-10 23:12:33 +02:00
2017-05-10 17:52:56 +08:00
//new client, add it to the list
console.info('New chat client connected (id=' + socket.id + ').');
io.chatClients.push(socket);
var us = getUsersList();
function getUsersList() {
var us = [];
io.chatClients.forEach(function (socket) {
us.push(socket.request.user);
2017-05-10 17:52:56 +08:00
});
//console.log(us);
2017-05-10 17:52:56 +08:00
return us;
}
// Emit the users list to the current connected user
socket.emit('usersList', us);
// Send a chat messages to all connected sockets when a message is received
socket.on('chatMessage', function (message) {
message.type = 'message';
message.created = Date.now();
message.user = socket.request.user;
2014-11-10 23:12:33 +02:00
// Emit the 'chatMessage' event
io.emit('chatMessage', message);
});
2014-11-10 23:12:33 +02:00
// Send a chat messages to all connected sockets when a message is received
socket.on('ban', function (message) {
if (socket.request.user.isOper) {
io.chatClients.forEach(function (bsocket) {
if (bsocket.request.user.username === message.username) {
message.type = 'status';
message.created = Date.now();
message.user = bsocket.request.user;
message.text = message.by.reason || 'you are not grateful';
message.by.user = socket.request.user;
// Emit the 'chatMessage' event
io.emit('ban', message);
//add to ban list
var address = bsocket.handshake.address;
var buser = {
user: bsocket.request.user,
ip: address,
expires: Date.now() + parseInt((message.by.expires || 60 * 60 * 1000 * 1), 10)
};
io.banClients.push(buser);
//disconnect user
bsocket.disconnect();
}
});
}
});
2017-05-10 17:52:56 +08:00
// When socket disconnects, remove it from the list
// Emit the status event when a socket client is disconnected
socket.on('disconnect', function () {
2017-05-10 17:52:56 +08:00
var index = io.chatClients.indexOf(socket);
if (index !== -1) {
io.chatClients.splice(index, 1);
console.info('Client disconnect (id=' + socket.id + ').');
}
io.emit('quit', {
2017-05-11 11:26:36 +08:00
type: 'status',
created: Date.now(),
user: socket.request.user
2014-11-10 23:12:33 +02:00
});
});
2014-11-10 23:12:33 +02:00
};