hacken
Version:
Hacken is a node module to help people in hackathons, it has almost all the common features a person needs from database operations to sockets. If you are the one who struglles with MongoDb ObjectId, hacken makes it easier to work with then too.
54 lines (47 loc) • 1.39 kB
JavaScript
const Room = require('./roomModel.js');
const User = require('./../User/userModel.js')
const socketFunction = (server)=>{
const socketIO = require('socket.io');
const io = socketIO(server);
io.on('connect',(socket)=>{
socket.on('init',(username,cb)=>{
console.log(username + " Requested To Join.");
User.findOne({username:username}).then((result)=>{
if(!result){
return cb("Invalid Username.");
}
socket.join('boradcast');
io.to('boradcast').emit('newUser',{msg:username + " Joined."});
}).catch((err)=>{
cb(err);
});
});
socket.on('sendMessage',(obj,cb)=>{
User.findOne({username:obj.username}).then((result)=>{
if(!result || !obj.username || !obj.text || !obj.time || Object.keys(obj).length != 3){
return cb("Invalid Details.");
}
Room.findOne({id:"broadcast"}).then((result_2)=>{
var room = result_2;
if(!result_2){
room = new Room({id:"broadcast"});
result.chatroom.push(room);
result.save();
}
room.messages.push({username:obj.username,text:obj.text,time:obj.time});
room.save();
io.to('broadcast').emit('recieveMessage',obj);
}).catch((err)=>{
console.log(err);
cb(err);
});
}).catch((err)=>{
console.log(err);
cb(err);
});
});
});
}
module.exports = {
socketFunction
}