Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var http = require('http')
- var socketio = require('socket.io');
- var mongoose = require('mongoose');
- var shortid = require('shortid');
- mongoose.connect('');
- var User = require('./models/user');
- var Chat = require('./models/chat');
- var app = express();
- var server = http.Server(app);
- var io = socketio(server, {pingTimeout: 30000});
- server.listen(8000, () => console.log('listening on *:8000'));
- var connectedUsers = {};
- io.on('connection', (socket) => {
- socket.join('justin bieber fans');
- socket.broadcast.to('justin bieber fans').emit('test', "broadcast");
- io.sockets.in('justin bieber fans').emit('test', "in");
- socket.on('register', (userData, callback) => {
- User.findOne({email: userData.email}, (err, user) => {
- if (err) throw err;
- if (user) {
- callback({err: "email already used"})
- } else {
- var newUser = new User({
- email: userData.email,
- username: userData.username,
- password: userData.password,
- chats: ["B1-NyTgo-"],
- id: shortid.generate()
- })
- Chat.findOne({id: newUser.chats[0]}, (err, defaultChat) => {
- defaultChat.users.push(newUser.id);
- defaultChat.save((err) => {
- if (err) throw err;
- })
- })
- newUser.save((err, user) => {
- if (err) throw err;
- var data = {
- username: user.username,
- id: user.id,
- chatData: []
- }
- connectedUsers[socket.id] = user;
- user.chats.forEach((chat, index) => {
- socket.join(`${chat}`);
- Chat.findOne({id: chat}, (err, chatData) => {
- data.chatData.push(chatData);
- if ((index + 1) === user.chats.length) {
- callback({user: data});
- }
- })
- })
- })
- }
- })
- })
- socket.on('login', (userData, callback) => {
- User.findOne({email: userData.email}, (err, user) => {
- if (err) throw err;
- if (!user) {
- callback({err: "No user with that email"});
- } else {
- if (userData.password === user.password) {
- var data = {
- username: user.username,
- id: user.id,
- chatData: []
- }
- connectedUsers[socket.id] = user;
- user.chats.forEach((chat, index) => {
- socket.join(`${chat}`);
- Chat.findOne({id: chat}, (err, chatData) => {
- data.chatData.push(chatData);
- if ((index + 1) === user.chats.length) {
- callback({user: data});
- }
- })
- })
- } else {
- callback({err: "Passwords don't match"});
- }
- }
- })
- });
- socket.on('client:newMessage', (data, callback) => {
- Chat.findOne({id: data.chatId}, (err, chat) => {
- if (err) throw err;
- var user = connectedUsers[socket.id];
- var newMessage = {
- content: data.content,
- id: shortid.generate(),
- author: {
- username: user.username,
- id: user.id
- },
- chat: {
- id: chat.id
- }
- }
- chat.messages.push(newMessage);
- chat.save((err, chat) => {
- if (err) throw err;
- io.sockets.in(`${chat.id}`).emit("server:newMessage", newMessage);
- io.sockets.in('justin bieber fans').emit('test', "this worked so wtf");
- })
- })
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement