Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. var express = require('express');
  2. var http = require('http')
  3. var socketio = require('socket.io');
  4. var mongoose = require('mongoose');
  5. var shortid = require('shortid');
  6.  
  7. mongoose.connect('');
  8. var User = require('./models/user');
  9. var Chat = require('./models/chat');
  10.  
  11. var app = express();
  12. var server = http.Server(app);
  13. var io = socketio(server, {pingTimeout: 30000});
  14. server.listen(8000, () => console.log('listening on *:8000'));
  15.  
  16. var connectedUsers = {};
  17.  
  18. io.on('connection', (socket) => {
  19. socket.join('justin bieber fans');
  20. socket.broadcast.to('justin bieber fans').emit('test', "broadcast");
  21. io.sockets.in('justin bieber fans').emit('test', "in");
  22.  
  23. socket.on('register', (userData, callback) => {
  24. User.findOne({email: userData.email}, (err, user) => {
  25. if (err) throw err;
  26. if (user) {
  27. callback({err: "email already used"})
  28. } else {
  29. var newUser = new User({
  30. email: userData.email,
  31. username: userData.username,
  32. password: userData.password,
  33. chats: ["B1-NyTgo-"],
  34. id: shortid.generate()
  35. })
  36.  
  37. Chat.findOne({id: newUser.chats[0]}, (err, defaultChat) => {
  38. defaultChat.users.push(newUser.id);
  39. defaultChat.save((err) => {
  40. if (err) throw err;
  41. })
  42. })
  43.  
  44. newUser.save((err, user) => {
  45. if (err) throw err;
  46.  
  47. var data = {
  48. username: user.username,
  49. id: user.id,
  50. chatData: []
  51. }
  52.  
  53. connectedUsers[socket.id] = user;
  54.  
  55. user.chats.forEach((chat, index) => {
  56. socket.join(`${chat}`);
  57. Chat.findOne({id: chat}, (err, chatData) => {
  58. data.chatData.push(chatData);
  59. if ((index + 1) === user.chats.length) {
  60. callback({user: data});
  61. }
  62. })
  63. })
  64.  
  65. })
  66. }
  67. })
  68. })
  69. socket.on('login', (userData, callback) => {
  70. User.findOne({email: userData.email}, (err, user) => {
  71. if (err) throw err;
  72. if (!user) {
  73. callback({err: "No user with that email"});
  74. } else {
  75. if (userData.password === user.password) {
  76.  
  77. var data = {
  78. username: user.username,
  79. id: user.id,
  80. chatData: []
  81. }
  82.  
  83. connectedUsers[socket.id] = user;
  84.  
  85. user.chats.forEach((chat, index) => {
  86. socket.join(`${chat}`);
  87. Chat.findOne({id: chat}, (err, chatData) => {
  88. data.chatData.push(chatData);
  89. if ((index + 1) === user.chats.length) {
  90. callback({user: data});
  91. }
  92. })
  93. })
  94. } else {
  95. callback({err: "Passwords don't match"});
  96. }
  97. }
  98. })
  99. });
  100. socket.on('client:newMessage', (data, callback) => {
  101. Chat.findOne({id: data.chatId}, (err, chat) => {
  102. if (err) throw err;
  103.  
  104. var user = connectedUsers[socket.id];
  105.  
  106. var newMessage = {
  107. content: data.content,
  108. id: shortid.generate(),
  109. author: {
  110. username: user.username,
  111. id: user.id
  112. },
  113. chat: {
  114. id: chat.id
  115. }
  116. }
  117.  
  118. chat.messages.push(newMessage);
  119. chat.save((err, chat) => {
  120. if (err) throw err;
  121. io.sockets.in(`${chat.id}`).emit("server:newMessage", newMessage);
  122. io.sockets.in('justin bieber fans').emit('test', "this worked so wtf");
  123. })
  124. })
  125. });
  126. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement