UNPKG

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
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 }