Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. var Message = require('./message.model');
  4.  
  5. var userNames = (function () {
  6.   var users = {};
  7.  
  8.   var claim = function (userID) {
  9.       users[userID] = true;
  10.       return true;
  11.   };
  12.  
  13.   // serialize claimed names as an array
  14.   var get = function () {
  15.     var res = [];
  16.     var userID;
  17.     for (userID in users) {
  18.       res.push(userID);
  19.     }
  20.  
  21.     return res;
  22.   };
  23.  
  24.   var free = function (userID) {
  25.     if (users[userID]) {
  26.       delete users[userID];
  27.     }
  28.   };
  29.  
  30.   return {
  31.     claim : claim,
  32.     free: free,
  33.     get: get
  34.   };
  35. }());
  36.  
  37.  
  38.  
  39. exports.register = function(socket) {
  40.  
  41.   var userID = '';
  42.  
  43.   var notifyUsers = function () {
  44.     // notify other clients that a new userID has joined
  45.     console.log(userID + ' joined, broadcasting...');
  46.     socket.broadcast.emit('user:join', {
  47.       userID: userID
  48.     });
  49.   };
  50.  
  51.   console.log("Sending user list...");
  52.   // send the new user the list of users
  53.   socket.emit('init', {
  54.     users: userNames.get()
  55.   });
  56.  
  57.   // get client infos and claim the id
  58.   socket.on('init:client', function (data) {
  59.     userNames.claim(data.userID);
  60.     userID = data.userID;
  61.     console.log('New client : ID ' + data.userID);
  62.     notifyUsers();
  63.   });
  64.  
  65.   // broadcast a userID's message to other users
  66.   socket.on('send:message', function (data) {
  67.     console.log('Broadcasting message sent by ' + userID);
  68.     socket.broadcast.emit('send:message', {
  69.       userID: userID,
  70.       text: data.message,
  71.       datetime : new Date()
  72.     });
  73.     // Save the message in the database
  74.     var newMessage = new Message();
  75.     newMessage.userID = userID;
  76.     newMessage.timestamp = new Date();
  77.     newMessage.message = data.message;
  78.     newMessage.save(function(err) {
  79.       if (err) {
  80.         console.log('Erreur : ' + err);
  81.       }
  82.     });
  83.  
  84.   });
  85.  
  86.  
  87.   // clean up when a userID leaves, and broadcast it to other users
  88.   socket.on('disconnect', function () {
  89.     console.log(userID + ' left, broadcasting...');
  90.     socket.broadcast.emit('user:left', {
  91.       userID: userID
  92.     });
  93.     userNames.free(userID);
  94.   });
  95.  
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement